/*
 * Copyright Codeplay Software Ltd.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use these files except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

// DO NOT MODIFY BY HAND
// This file was automatically generated by generate_conv2d_tests.py.
// Results calculated using Tensorflow v1.12.0.

#include <gtest/gtest.h>

#include "sycldnn/padding_mode.h"

#include "test/types/cartesian_product.h"
#include "test/types/kernel_data_types.h"
#include "test/types/nested_pairs_to_triple.h"
#include "test/types/test_backend_types.h"
#include "test/types/to_gtest_types.h"

#include "test/conv2d/selector_list.h"
#include "test/conv2d/window_stride_fixture.h"

#include <array>
#include <vector>

using DataTypeList = sycldnn::types::KernelDataTypes;
using Selectors = sycldnn::types::SelectorList;
using Backends = sycldnn::types::AllBackendTypes;

using SNNTypePairs =
    sycldnn::types::CartesianProduct<Selectors, DataTypeList>::type;
using BackendTypePairs =
    sycldnn::types::CartesianProduct<SNNTypePairs, Backends>::type;
using TestTriples = sycldnn::types::NestedPairsToTriple<BackendTypePairs>::type;

using GTestTypeTriples = sycldnn::types::ToGTestTypes<TestTriples>::type;

template <typename Pair>
using FilterBackpropWindow7Stride1 = WindowStrideTest<Pair, 7, 1>;
TYPED_TEST_SUITE(FilterBackpropWindow7Stride1, GTestTypeTriples);
TYPED_TEST(FilterBackpropWindow7Stride1, SAME1x8x8x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      25100., 30545., 36120., 41820., 36960., 31985., 26900., 34640., 41934.,
      49336., 56840., 50008., 43086., 36080., 44940., 54187., 63504., 72884.,
      63896., 54859., 45780., 55680., 66920., 78176., 89440., 78176., 66920.,
      55680., 45780., 54859., 63896., 72884., 63504., 54187., 44940., 36080.,
      43086., 50008., 56840., 49336., 41934., 34640., 26900., 31985., 36960.,
      41820., 36120., 30545., 25100.};
  const std::array<int, 4> in_shape = {{1, 8, 8, 1}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, VALID1x8x8x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      72.,  82.,  92.,  102., 112., 122., 132., 152., 162., 172.,
      182., 192., 202., 212., 232., 242., 252., 262., 272., 282.,
      292., 312., 322., 332., 342., 352., 362., 372., 392., 402.,
      412., 422., 432., 442., 452., 472., 482., 492., 502., 512.,
      522., 532., 552., 562., 572., 582., 592., 602., 612.};
  const std::array<int, 4> in_shape = {{1, 8, 8, 1}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, SAME1x8x8x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      49725.,  50200.,  60505.,  61090.,  71540.,  72240.,  82820.,  83640.,
      73185.,  73920.,  63325.,  63970.,  53250.,  53800.,  68590.,  69280.,
      83022.,  83868.,  97664.,  98672.,  112504., 113680., 98966.,  100016.,
      85254.,  86172.,  71380.,  72160.,  88935.,  89880.,  107219., 108374.,
      125636., 127008., 144172., 145768., 126371., 127792., 108479., 109718.,
      90510.,  91560.,  110120., 111360., 132328., 133840., 154560., 156352.,
      176800., 178880., 154504., 156352., 132232., 133840., 110000., 111360.,
      90335.,  91560.,  108227., 109718., 126028., 127792., 143724., 145768.,
      125195., 127008., 106799., 108374., 88550.,  89880.,  70990.,  72160.,
      84750.,  86172.,  98336.,  100016., 111736., 113680., 96950.,  98672.,
      82374.,  83868.,  68020.,  69280.,  52725.,  53800.,  62665.,  63970.,
      72380.,  73920.,  81860.,  83640.,  70665.,  72240.,  59725.,  61090.,
      49050.,  50200.};
  const std::array<int, 4> in_shape = {{1, 8, 8, 1}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, VALID1x8x8x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      122., 144.,  138., 164.,  154., 184.,  170., 204.,  186., 224.,
      202., 244.,  218., 264.,  250., 304.,  266., 324.,  282., 344.,
      298., 364.,  314., 384.,  330., 404.,  346., 424.,  378., 464.,
      394., 484.,  410., 504.,  426., 524.,  442., 544.,  458., 564.,
      474., 584.,  506., 624.,  522., 644.,  538., 664.,  554., 684.,
      570., 704.,  586., 724.,  602., 744.,  634., 784.,  650., 804.,
      666., 824.,  682., 844.,  698., 864.,  714., 884.,  730., 904.,
      762., 944.,  778., 964.,  794., 984.,  810., 1004., 826., 1024.,
      842., 1044., 858., 1064., 890., 1104., 906., 1124., 922., 1144.,
      938., 1164., 954., 1184., 970., 1204., 986., 1224.};
  const std::array<int, 4> in_shape = {{1, 8, 8, 1}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, SAME1x8x8x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      98975.,  99450.,  99925.,  100400., 120425., 121010., 121595., 122180.,
      142380., 143080., 143780., 144480., 164820., 165640., 166460., 167280.,
      145635., 146370., 147105., 147840., 126005., 126650., 127295., 127940.,
      105950., 106500., 107050., 107600., 136490., 137180., 137870., 138560.,
      165198., 166044., 166890., 167736., 194320., 195328., 196336., 197344.,
      223832., 225008., 226184., 227360., 196882., 197932., 198982., 200032.,
      169590., 170508., 171426., 172344., 141980., 142760., 143540., 144320.,
      176925., 177870., 178815., 179760., 213283., 214438., 215593., 216748.,
      249900., 251272., 252644., 254016., 286748., 288344., 289940., 291536.,
      251321., 252742., 254163., 255584., 215719., 216958., 218197., 219436.,
      179970., 181020., 182070., 183120., 219000., 220240., 221480., 222720.,
      263144., 264656., 266168., 267680., 307328., 309120., 310912., 312704.,
      351520., 353600., 355680., 357760., 307160., 309008., 310856., 312704.,
      262856., 264464., 266072., 267680., 218640., 220000., 221360., 222720.,
      179445., 180670., 181895., 183120., 214963., 216454., 217945., 219436.,
      250292., 252056., 253820., 255584., 285404., 287448., 289492., 291536.,
      248577., 250390., 252203., 254016., 212023., 213598., 215173., 216748.,
      175770., 177100., 178430., 179760., 140810., 141980., 143150., 144320.,
      168078., 169500., 170922., 172344., 194992., 196672., 198352., 200032.,
      221528., 223472., 225416., 227360., 192178., 193900., 195622., 197344.,
      163254., 164748., 166242., 167736., 134780., 136040., 137300., 138560.,
      104375., 105450., 106525., 107600., 124025., 125330., 126635., 127940.,
      143220., 144760., 146300., 147840., 161940., 163720., 165500., 167280.,
      139755., 141330., 142905., 144480., 118085., 119450., 120815., 122180.,
      96950.,  98100.,  99250.,  100400.};
  const std::array<int, 4> in_shape = {{1, 8, 8, 1}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, VALID1x8x8x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      222.,  244.,  266.,  288.,  250.,  276.,  302.,  328.,  278.,  308.,
      338.,  368.,  306.,  340.,  374.,  408.,  334.,  372.,  410.,  448.,
      362.,  404.,  446.,  488.,  390.,  436.,  482.,  528.,  446.,  500.,
      554.,  608.,  474.,  532.,  590.,  648.,  502.,  564.,  626.,  688.,
      530.,  596.,  662.,  728.,  558.,  628.,  698.,  768.,  586.,  660.,
      734.,  808.,  614.,  692.,  770.,  848.,  670.,  756.,  842.,  928.,
      698.,  788.,  878.,  968.,  726.,  820.,  914.,  1008., 754.,  852.,
      950.,  1048., 782.,  884.,  986.,  1088., 810.,  916.,  1022., 1128.,
      838.,  948.,  1058., 1168., 894.,  1012., 1130., 1248., 922.,  1044.,
      1166., 1288., 950.,  1076., 1202., 1328., 978.,  1108., 1238., 1368.,
      1006., 1140., 1274., 1408., 1034., 1172., 1310., 1448., 1062., 1204.,
      1346., 1488., 1118., 1268., 1418., 1568., 1146., 1300., 1454., 1608.,
      1174., 1332., 1490., 1648., 1202., 1364., 1526., 1688., 1230., 1396.,
      1562., 1728., 1258., 1428., 1598., 1768., 1286., 1460., 1634., 1808.,
      1342., 1524., 1706., 1888., 1370., 1556., 1742., 1928., 1398., 1588.,
      1778., 1968., 1426., 1620., 1814., 2008., 1454., 1652., 1850., 2048.,
      1482., 1684., 1886., 2088., 1510., 1716., 1922., 2128., 1566., 1780.,
      1994., 2208., 1594., 1812., 2030., 2248., 1622., 1844., 2066., 2288.,
      1650., 1876., 2102., 2328., 1678., 1908., 2138., 2368., 1706., 1940.,
      2174., 2408., 1734., 1972., 2210., 2448.};
  const std::array<int, 4> in_shape = {{1, 8, 8, 1}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, SAME1x8x8x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      49050.,  50200.,  59725.,  61090.,  70665.,  72240.,  81860.,  83640.,
      72380.,  73920.,  62665.,  63970.,  52725.,  53800.,  68020.,  69280.,
      82374.,  83868.,  96950.,  98672.,  111736., 113680., 98336.,  100016.,
      84750.,  86172.,  70990.,  72160.,  88550.,  89880.,  106799., 108374.,
      125195., 127008., 143724., 145768., 126028., 127792., 108227., 109718.,
      90335.,  91560.,  110000., 111360., 132232., 133840., 154504., 156352.,
      176800., 178880., 154560., 156352., 132328., 133840., 110120., 111360.,
      90510.,  91560.,  108479., 109718., 126371., 127792., 144172., 145768.,
      125636., 127008., 107219., 108374., 88935.,  89880.,  71380.,  72160.,
      85254.,  86172.,  98966.,  100016., 112504., 113680., 97664.,  98672.,
      83022.,  83868.,  68590.,  69280.,  53250.,  53800.,  63325.,  63970.,
      73185.,  73920.,  82820.,  83640.,  71540.,  72240.,  60505.,  61090.,
      49725.,  50200.};
  const std::array<int, 4> in_shape = {{1, 8, 8, 2}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, VALID1x8x8x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      134.,  144.,  154.,  164.,  174.,  184.,  194.,  204.,  214.,  224.,
      234.,  244.,  254.,  264.,  294.,  304.,  314.,  324.,  334.,  344.,
      354.,  364.,  374.,  384.,  394.,  404.,  414.,  424.,  454.,  464.,
      474.,  484.,  494.,  504.,  514.,  524.,  534.,  544.,  554.,  564.,
      574.,  584.,  614.,  624.,  634.,  644.,  654.,  664.,  674.,  684.,
      694.,  704.,  714.,  724.,  734.,  744.,  774.,  784.,  794.,  804.,
      814.,  824.,  834.,  844.,  854.,  864.,  874.,  884.,  894.,  904.,
      934.,  944.,  954.,  964.,  974.,  984.,  994.,  1004., 1014., 1024.,
      1034., 1044., 1054., 1064., 1094., 1104., 1114., 1124., 1134., 1144.,
      1154., 1164., 1174., 1184., 1194., 1204., 1214., 1224.};
  const std::array<int, 4> in_shape = {{1, 8, 8, 2}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, SAME1x8x8x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      97175.,  98100.,  99450.,  100400., 118310., 119450., 121010., 122180.,
      139965., 141330., 143080., 144480., 162120., 163720., 165640., 167280.,
      143325., 144760., 146370., 147840., 124070., 125330., 126650., 127940.,
      104375., 105450., 106500., 107600., 134690., 136040., 137180., 138560.,
      163092., 164748., 166044., 167736., 191926., 193900., 195328., 197344.,
      221168., 223472., 225008., 227360., 194614., 196672., 197932., 200032.,
      167700., 169500., 170508., 172344., 140450., 141980., 142760., 144320.,
      175245., 177100., 177870., 179760., 211330., 213598., 214438., 216748.,
      247695., 250390., 251272., 254016., 284312., 287448., 288344., 291536.,
      249263., 252056., 252742., 255584., 214018., 216454., 216958., 219436.,
      178605., 180670., 181020., 183120., 217560., 220000., 220240., 222720.,
      261488., 264464., 264656., 267680., 305480., 309008., 309120., 312704.,
      349504., 353600., 353600., 357760., 305480., 309120., 309008., 312704.,
      261488., 264656., 264464., 267680., 217560., 220240., 220000., 222720.,
      178605., 181020., 180670., 183120., 214018., 216958., 216454., 219436.,
      249263., 252742., 252056., 255584., 284312., 288344., 287448., 291536.,
      247695., 251272., 250390., 254016., 211330., 214438., 213598., 216748.,
      175245., 177870., 177100., 179760., 140450., 142760., 141980., 144320.,
      167700., 170508., 169500., 172344., 194614., 197932., 196672., 200032.,
      221168., 225008., 223472., 227360., 191926., 195328., 193900., 197344.,
      163092., 166044., 164748., 167736., 134690., 137180., 136040., 138560.,
      104375., 106500., 105450., 107600., 124070., 126650., 125330., 127940.,
      143325., 146370., 144760., 147840., 162120., 165640., 163720., 167280.,
      139965., 143080., 141330., 144480., 118310., 121010., 119450., 122180.,
      97175.,  99450.,  98100.,  100400.};
  const std::array<int, 4> in_shape = {{1, 8, 8, 2}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, VALID1x8x8x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      228.,  268.,  244.,  288.,  260.,  308.,  276.,  328.,  292.,  348.,
      308.,  368.,  324.,  388.,  340.,  408.,  356.,  428.,  372.,  448.,
      388.,  468.,  404.,  488.,  420.,  508.,  436.,  528.,  484.,  588.,
      500.,  608.,  516.,  628.,  532.,  648.,  548.,  668.,  564.,  688.,
      580.,  708.,  596.,  728.,  612.,  748.,  628.,  768.,  644.,  788.,
      660.,  808.,  676.,  828.,  692.,  848.,  740.,  908.,  756.,  928.,
      772.,  948.,  788.,  968.,  804.,  988.,  820.,  1008., 836.,  1028.,
      852.,  1048., 868.,  1068., 884.,  1088., 900.,  1108., 916.,  1128.,
      932.,  1148., 948.,  1168., 996.,  1228., 1012., 1248., 1028., 1268.,
      1044., 1288., 1060., 1308., 1076., 1328., 1092., 1348., 1108., 1368.,
      1124., 1388., 1140., 1408., 1156., 1428., 1172., 1448., 1188., 1468.,
      1204., 1488., 1252., 1548., 1268., 1568., 1284., 1588., 1300., 1608.,
      1316., 1628., 1332., 1648., 1348., 1668., 1364., 1688., 1380., 1708.,
      1396., 1728., 1412., 1748., 1428., 1768., 1444., 1788., 1460., 1808.,
      1508., 1868., 1524., 1888., 1540., 1908., 1556., 1928., 1572., 1948.,
      1588., 1968., 1604., 1988., 1620., 2008., 1636., 2028., 1652., 2048.,
      1668., 2068., 1684., 2088., 1700., 2108., 1716., 2128., 1764., 2188.,
      1780., 2208., 1796., 2228., 1812., 2248., 1828., 2268., 1844., 2288.,
      1860., 2308., 1876., 2328., 1892., 2348., 1908., 2368., 1924., 2388.,
      1940., 2408., 1956., 2428., 1972., 2448.};
  const std::array<int, 4> in_shape = {{1, 8, 8, 2}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, SAME1x8x8x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      193425., 194350., 195275., 196200., 197950., 198900., 199850., 200800.,
      235480., 236620., 237760., 238900., 240850., 242020., 243190., 244360.,
      278565., 279930., 281295., 282660., 284760., 286160., 287560., 288960.,
      322640., 324240., 325840., 327440., 329640., 331280., 332920., 334560.,
      285215., 286650., 288085., 289520., 291270., 292740., 294210., 295680.,
      246880., 248140., 249400., 250660., 252010., 253300., 254590., 255880.,
      207675., 208750., 209825., 210900., 211900., 213000., 214100., 215200.,
      268030., 269380., 270730., 272080., 272980., 274360., 275740., 277120.,
      324528., 326184., 327840., 329496., 330396., 332088., 333780., 335472.,
      381878., 383852., 385826., 387800., 388640., 390656., 392672., 394688.,
      440032., 442336., 444640., 446944., 447664., 450016., 452368., 454720.,
      387170., 389228., 391286., 393344., 393764., 395864., 397964., 400064.,
      333600., 335400., 337200., 339000., 339180., 341016., 342852., 344688.,
      279370., 280900., 282430., 283960., 283960., 285520., 287080., 288640.,
      348635., 350490., 352345., 354200., 353850., 355740., 357630., 359520.,
      420392., 422660., 424928., 427196., 426566., 428876., 431186., 433496.,
      492695., 495390., 498085., 500780., 499800., 502544., 505288., 508032.,
      565488., 568624., 571760., 574896., 573496., 576688., 579880., 583072.,
      495733., 498526., 501319., 504112., 502642., 505484., 508326., 511168.,
      425600., 428036., 430472., 432908., 431438., 433916., 436394., 438872.,
      355145., 357210., 359275., 361340., 359940., 362040., 364140., 366240.,
      432680., 435120., 437560., 440000., 438000., 440480., 442960., 445440.,
      520000., 522976., 525952., 528928., 526288., 529312., 532336., 535360.,
      607432., 610960., 614488., 618016., 614656., 618240., 621824., 625408.,
      694912., 699008., 703104., 707200., 703040., 707200., 711360., 715520.,
      607320., 610960., 614600., 618240., 614320., 618016., 621712., 625408.,
      519808., 522976., 526144., 529312., 525712., 528928., 532144., 535360.,
      432440., 435120., 437800., 440480., 437280., 440000., 442720., 445440.,
      354795., 357210., 359625., 362040., 358890., 361340., 363790., 366240.,
      425096., 428036., 430976., 433916., 429926., 432908., 435890., 438872.,
      495047., 498526., 502005., 505484., 500584., 504112., 507640., 511168.,
      564592., 568624., 572656., 576688., 570808., 574896., 578984., 583072.,
      491813., 495390., 498967., 502544., 497154., 500780., 504406., 508032.,
      419552., 422660., 425768., 428876., 424046., 427196., 430346., 433496.,
      347865., 350490., 353115., 355740., 351540., 354200., 356860., 359520.,
      278590., 280900., 283210., 285520., 281620., 283960., 286300., 288640.,
      332592., 335400., 338208., 341016., 336156., 339000., 341844., 344688.,
      385910., 389228., 392546., 395864., 389984., 393344., 396704., 400064.,
      438496., 442336., 446176., 450016., 443056., 446944., 450832., 454720.,
      380450., 383852., 387254., 390656., 384356., 387800., 391244., 394688.,
      323232., 326184., 329136., 332088., 326508., 329496., 332484., 335472.,
      266890., 269380., 271870., 274360., 269560., 272080., 274600., 277120.,
      206625., 208750., 210875., 213000., 208750., 210900., 213050., 215200.,
      245560., 248140., 250720., 253300., 248050., 250660., 253270., 255880.,
      283605., 286650., 289695., 292740., 286440., 289520., 292600., 295680.,
      320720., 324240., 327760., 331280., 323880., 327440., 331000., 334560.,
      276815., 279930., 283045., 286160., 279510., 282660., 285810., 288960.,
      233920., 236620., 239320., 242020., 236170., 238900., 241630., 244360.,
      192075., 194350., 196625., 198900., 193900., 196200., 198500., 200800.};
  const std::array<int, 4> in_shape = {{1, 8, 8, 2}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, VALID1x8x8x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      416.,  456.,  496.,  536.,  444.,  488.,  532.,  576.,  472.,  520.,
      568.,  616.,  500.,  552.,  604.,  656.,  528.,  584.,  640.,  696.,
      556.,  616.,  676.,  736.,  584.,  648.,  712.,  776.,  612.,  680.,
      748.,  816.,  640.,  712.,  784.,  856.,  668.,  744.,  820.,  896.,
      696.,  776.,  856.,  936.,  724.,  808.,  892.,  976.,  752.,  840.,
      928.,  1016., 780.,  872.,  964.,  1056., 864.,  968.,  1072., 1176.,
      892.,  1000., 1108., 1216., 920.,  1032., 1144., 1256., 948.,  1064.,
      1180., 1296., 976.,  1096., 1216., 1336., 1004., 1128., 1252., 1376.,
      1032., 1160., 1288., 1416., 1060., 1192., 1324., 1456., 1088., 1224.,
      1360., 1496., 1116., 1256., 1396., 1536., 1144., 1288., 1432., 1576.,
      1172., 1320., 1468., 1616., 1200., 1352., 1504., 1656., 1228., 1384.,
      1540., 1696., 1312., 1480., 1648., 1816., 1340., 1512., 1684., 1856.,
      1368., 1544., 1720., 1896., 1396., 1576., 1756., 1936., 1424., 1608.,
      1792., 1976., 1452., 1640., 1828., 2016., 1480., 1672., 1864., 2056.,
      1508., 1704., 1900., 2096., 1536., 1736., 1936., 2136., 1564., 1768.,
      1972., 2176., 1592., 1800., 2008., 2216., 1620., 1832., 2044., 2256.,
      1648., 1864., 2080., 2296., 1676., 1896., 2116., 2336., 1760., 1992.,
      2224., 2456., 1788., 2024., 2260., 2496., 1816., 2056., 2296., 2536.,
      1844., 2088., 2332., 2576., 1872., 2120., 2368., 2616., 1900., 2152.,
      2404., 2656., 1928., 2184., 2440., 2696., 1956., 2216., 2476., 2736.,
      1984., 2248., 2512., 2776., 2012., 2280., 2548., 2816., 2040., 2312.,
      2584., 2856., 2068., 2344., 2620., 2896., 2096., 2376., 2656., 2936.,
      2124., 2408., 2692., 2976., 2208., 2504., 2800., 3096., 2236., 2536.,
      2836., 3136., 2264., 2568., 2872., 3176., 2292., 2600., 2908., 3216.,
      2320., 2632., 2944., 3256., 2348., 2664., 2980., 3296., 2376., 2696.,
      3016., 3336., 2404., 2728., 3052., 3376., 2432., 2760., 3088., 3416.,
      2460., 2792., 3124., 3456., 2488., 2824., 3160., 3496., 2516., 2856.,
      3196., 3536., 2544., 2888., 3232., 3576., 2572., 2920., 3268., 3616.,
      2656., 3016., 3376., 3736., 2684., 3048., 3412., 3776., 2712., 3080.,
      3448., 3816., 2740., 3112., 3484., 3856., 2768., 3144., 3520., 3896.,
      2796., 3176., 3556., 3936., 2824., 3208., 3592., 3976., 2852., 3240.,
      3628., 4016., 2880., 3272., 3664., 4056., 2908., 3304., 3700., 4096.,
      2936., 3336., 3736., 4136., 2964., 3368., 3772., 4176., 2992., 3400.,
      3808., 4216., 3020., 3432., 3844., 4256., 3104., 3528., 3952., 4376.,
      3132., 3560., 3988., 4416., 3160., 3592., 4024., 4456., 3188., 3624.,
      4060., 4496., 3216., 3656., 4096., 4536., 3244., 3688., 4132., 4576.,
      3272., 3720., 4168., 4616., 3300., 3752., 4204., 4656., 3328., 3784.,
      4240., 4696., 3356., 3816., 4276., 4736., 3384., 3848., 4312., 4776.,
      3412., 3880., 4348., 4816., 3440., 3912., 4384., 4856., 3468., 3944.,
      4420., 4896.};
  const std::array<int, 4> in_shape = {{1, 8, 8, 2}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, SAME1x8x8x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      96950.,  98100.,  99250.,  100400., 118085., 119450., 120815., 122180.,
      139755., 141330., 142905., 144480., 161940., 163720., 165500., 167280.,
      143220., 144760., 146300., 147840., 124025., 125330., 126635., 127940.,
      104375., 105450., 106525., 107600., 134780., 136040., 137300., 138560.,
      163254., 164748., 166242., 167736., 192178., 193900., 195622., 197344.,
      221528., 223472., 225416., 227360., 194992., 196672., 198352., 200032.,
      168078., 169500., 170922., 172344., 140810., 141980., 143150., 144320.,
      175770., 177100., 178430., 179760., 212023., 213598., 215173., 216748.,
      248577., 250390., 252203., 254016., 285404., 287448., 289492., 291536.,
      250292., 252056., 253820., 255584., 214963., 216454., 217945., 219436.,
      179445., 180670., 181895., 183120., 218640., 220000., 221360., 222720.,
      262856., 264464., 266072., 267680., 307160., 309008., 310856., 312704.,
      351520., 353600., 355680., 357760., 307328., 309120., 310912., 312704.,
      263144., 264656., 266168., 267680., 219000., 220240., 221480., 222720.,
      179970., 181020., 182070., 183120., 215719., 216958., 218197., 219436.,
      251321., 252742., 254163., 255584., 286748., 288344., 289940., 291536.,
      249900., 251272., 252644., 254016., 213283., 214438., 215593., 216748.,
      176925., 177870., 178815., 179760., 141980., 142760., 143540., 144320.,
      169590., 170508., 171426., 172344., 196882., 197932., 198982., 200032.,
      223832., 225008., 226184., 227360., 194320., 195328., 196336., 197344.,
      165198., 166044., 166890., 167736., 136490., 137180., 137870., 138560.,
      105950., 106500., 107050., 107600., 126005., 126650., 127295., 127940.,
      145635., 146370., 147105., 147840., 164820., 165640., 166460., 167280.,
      142380., 143080., 143780., 144480., 120425., 121010., 121595., 122180.,
      98975.,  99450.,  99925.,  100400.};
  const std::array<int, 4> in_shape = {{1, 8, 8, 4}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, VALID1x8x8x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      258.,  268.,  278.,  288.,  298.,  308.,  318.,  328.,  338.,  348.,
      358.,  368.,  378.,  388.,  398.,  408.,  418.,  428.,  438.,  448.,
      458.,  468.,  478.,  488.,  498.,  508.,  518.,  528.,  578.,  588.,
      598.,  608.,  618.,  628.,  638.,  648.,  658.,  668.,  678.,  688.,
      698.,  708.,  718.,  728.,  738.,  748.,  758.,  768.,  778.,  788.,
      798.,  808.,  818.,  828.,  838.,  848.,  898.,  908.,  918.,  928.,
      938.,  948.,  958.,  968.,  978.,  988.,  998.,  1008., 1018., 1028.,
      1038., 1048., 1058., 1068., 1078., 1088., 1098., 1108., 1118., 1128.,
      1138., 1148., 1158., 1168., 1218., 1228., 1238., 1248., 1258., 1268.,
      1278., 1288., 1298., 1308., 1318., 1328., 1338., 1348., 1358., 1368.,
      1378., 1388., 1398., 1408., 1418., 1428., 1438., 1448., 1458., 1468.,
      1478., 1488., 1538., 1548., 1558., 1568., 1578., 1588., 1598., 1608.,
      1618., 1628., 1638., 1648., 1658., 1668., 1678., 1688., 1698., 1708.,
      1718., 1728., 1738., 1748., 1758., 1768., 1778., 1788., 1798., 1808.,
      1858., 1868., 1878., 1888., 1898., 1908., 1918., 1928., 1938., 1948.,
      1958., 1968., 1978., 1988., 1998., 2008., 2018., 2028., 2038., 2048.,
      2058., 2068., 2078., 2088., 2098., 2108., 2118., 2128., 2178., 2188.,
      2198., 2208., 2218., 2228., 2238., 2248., 2258., 2268., 2278., 2288.,
      2298., 2308., 2318., 2328., 2338., 2348., 2358., 2368., 2378., 2388.,
      2398., 2408., 2418., 2428., 2438., 2448.};
  const std::array<int, 4> in_shape = {{1, 8, 8, 4}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, SAME1x8x8x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      192075., 193900., 194350., 196200., 196625., 198500., 198900., 200800.,
      233920., 236170., 236620., 238900., 239320., 241630., 242020., 244360.,
      276815., 279510., 279930., 282660., 283045., 285810., 286160., 288960.,
      320720., 323880., 324240., 327440., 327760., 331000., 331280., 334560.,
      283605., 286440., 286650., 289520., 289695., 292600., 292740., 295680.,
      245560., 248050., 248140., 250660., 250720., 253270., 253300., 255880.,
      206625., 208750., 208750., 210900., 210875., 213050., 213000., 215200.,
      266890., 269560., 269380., 272080., 271870., 274600., 274360., 277120.,
      323232., 326508., 326184., 329496., 329136., 332484., 332088., 335472.,
      380450., 384356., 383852., 387800., 387254., 391244., 390656., 394688.,
      438496., 443056., 442336., 446944., 446176., 450832., 450016., 454720.,
      385910., 389984., 389228., 393344., 392546., 396704., 395864., 400064.,
      332592., 336156., 335400., 339000., 338208., 341844., 341016., 344688.,
      278590., 281620., 280900., 283960., 283210., 286300., 285520., 288640.,
      347865., 351540., 350490., 354200., 353115., 356860., 355740., 359520.,
      419552., 424046., 422660., 427196., 425768., 430346., 428876., 433496.,
      491813., 497154., 495390., 500780., 498967., 504406., 502544., 508032.,
      564592., 570808., 568624., 574896., 572656., 578984., 576688., 583072.,
      495047., 500584., 498526., 504112., 502005., 507640., 505484., 511168.,
      425096., 429926., 428036., 432908., 430976., 435890., 433916., 438872.,
      354795., 358890., 357210., 361340., 359625., 363790., 362040., 366240.,
      432440., 437280., 435120., 440000., 437800., 442720., 440480., 445440.,
      519808., 525712., 522976., 528928., 526144., 532144., 529312., 535360.,
      607320., 614320., 610960., 618016., 614600., 621712., 618240., 625408.,
      694912., 703040., 699008., 707200., 703104., 711360., 707200., 715520.,
      607432., 614656., 610960., 618240., 614488., 621824., 618016., 625408.,
      520000., 526288., 522976., 529312., 525952., 532336., 528928., 535360.,
      432680., 438000., 435120., 440480., 437560., 442960., 440000., 445440.,
      355145., 359940., 357210., 362040., 359275., 364140., 361340., 366240.,
      425600., 431438., 428036., 433916., 430472., 436394., 432908., 438872.,
      495733., 502642., 498526., 505484., 501319., 508326., 504112., 511168.,
      565488., 573496., 568624., 576688., 571760., 579880., 574896., 583072.,
      492695., 499800., 495390., 502544., 498085., 505288., 500780., 508032.,
      420392., 426566., 422660., 428876., 424928., 431186., 427196., 433496.,
      348635., 353850., 350490., 355740., 352345., 357630., 354200., 359520.,
      279370., 283960., 280900., 285520., 282430., 287080., 283960., 288640.,
      333600., 339180., 335400., 341016., 337200., 342852., 339000., 344688.,
      387170., 393764., 389228., 395864., 391286., 397964., 393344., 400064.,
      440032., 447664., 442336., 450016., 444640., 452368., 446944., 454720.,
      381878., 388640., 383852., 390656., 385826., 392672., 387800., 394688.,
      324528., 330396., 326184., 332088., 327840., 333780., 329496., 335472.,
      268030., 272980., 269380., 274360., 270730., 275740., 272080., 277120.,
      207675., 211900., 208750., 213000., 209825., 214100., 210900., 215200.,
      246880., 252010., 248140., 253300., 249400., 254590., 250660., 255880.,
      285215., 291270., 286650., 292740., 288085., 294210., 289520., 295680.,
      322640., 329640., 324240., 331280., 325840., 332920., 327440., 334560.,
      278565., 284760., 279930., 286160., 281295., 287560., 282660., 288960.,
      235480., 240850., 236620., 242020., 237760., 243190., 238900., 244360.,
      193425., 197950., 194350., 198900., 195275., 199850., 196200., 200800.};
  const std::array<int, 4> in_shape = {{1, 8, 8, 4}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, VALID1x8x8x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      440.,  516.,  456.,  536.,  472.,  556.,  488.,  576.,  504.,  596.,
      520.,  616.,  536.,  636.,  552.,  656.,  568.,  676.,  584.,  696.,
      600.,  716.,  616.,  736.,  632.,  756.,  648.,  776.,  664.,  796.,
      680.,  816.,  696.,  836.,  712.,  856.,  728.,  876.,  744.,  896.,
      760.,  916.,  776.,  936.,  792.,  956.,  808.,  976.,  824.,  996.,
      840.,  1016., 856.,  1036., 872.,  1056., 952.,  1156., 968.,  1176.,
      984.,  1196., 1000., 1216., 1016., 1236., 1032., 1256., 1048., 1276.,
      1064., 1296., 1080., 1316., 1096., 1336., 1112., 1356., 1128., 1376.,
      1144., 1396., 1160., 1416., 1176., 1436., 1192., 1456., 1208., 1476.,
      1224., 1496., 1240., 1516., 1256., 1536., 1272., 1556., 1288., 1576.,
      1304., 1596., 1320., 1616., 1336., 1636., 1352., 1656., 1368., 1676.,
      1384., 1696., 1464., 1796., 1480., 1816., 1496., 1836., 1512., 1856.,
      1528., 1876., 1544., 1896., 1560., 1916., 1576., 1936., 1592., 1956.,
      1608., 1976., 1624., 1996., 1640., 2016., 1656., 2036., 1672., 2056.,
      1688., 2076., 1704., 2096., 1720., 2116., 1736., 2136., 1752., 2156.,
      1768., 2176., 1784., 2196., 1800., 2216., 1816., 2236., 1832., 2256.,
      1848., 2276., 1864., 2296., 1880., 2316., 1896., 2336., 1976., 2436.,
      1992., 2456., 2008., 2476., 2024., 2496., 2040., 2516., 2056., 2536.,
      2072., 2556., 2088., 2576., 2104., 2596., 2120., 2616., 2136., 2636.,
      2152., 2656., 2168., 2676., 2184., 2696., 2200., 2716., 2216., 2736.,
      2232., 2756., 2248., 2776., 2264., 2796., 2280., 2816., 2296., 2836.,
      2312., 2856., 2328., 2876., 2344., 2896., 2360., 2916., 2376., 2936.,
      2392., 2956., 2408., 2976., 2488., 3076., 2504., 3096., 2520., 3116.,
      2536., 3136., 2552., 3156., 2568., 3176., 2584., 3196., 2600., 3216.,
      2616., 3236., 2632., 3256., 2648., 3276., 2664., 3296., 2680., 3316.,
      2696., 3336., 2712., 3356., 2728., 3376., 2744., 3396., 2760., 3416.,
      2776., 3436., 2792., 3456., 2808., 3476., 2824., 3496., 2840., 3516.,
      2856., 3536., 2872., 3556., 2888., 3576., 2904., 3596., 2920., 3616.,
      3000., 3716., 3016., 3736., 3032., 3756., 3048., 3776., 3064., 3796.,
      3080., 3816., 3096., 3836., 3112., 3856., 3128., 3876., 3144., 3896.,
      3160., 3916., 3176., 3936., 3192., 3956., 3208., 3976., 3224., 3996.,
      3240., 4016., 3256., 4036., 3272., 4056., 3288., 4076., 3304., 4096.,
      3320., 4116., 3336., 4136., 3352., 4156., 3368., 4176., 3384., 4196.,
      3400., 4216., 3416., 4236., 3432., 4256., 3512., 4356., 3528., 4376.,
      3544., 4396., 3560., 4416., 3576., 4436., 3592., 4456., 3608., 4476.,
      3624., 4496., 3640., 4516., 3656., 4536., 3672., 4556., 3688., 4576.,
      3704., 4596., 3720., 4616., 3736., 4636., 3752., 4656., 3768., 4676.,
      3784., 4696., 3800., 4716., 3816., 4736., 3832., 4756., 3848., 4776.,
      3864., 4796., 3880., 4816., 3896., 4836., 3912., 4856., 3928., 4876.,
      3944., 4896.};
  const std::array<int, 4> in_shape = {{1, 8, 8, 4}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, SAME1x8x8x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      382325.,  384150.,  385975.,  387800.,  386850.,  388700.,  390550.,
      392400.,  391375.,  393250.,  395125.,  397000.,  395900.,  397800.,
      399700.,  401600.,  465590.,  467840.,  470090.,  472340.,  470960.,
      473240.,  475520.,  477800.,  476330.,  478640.,  480950.,  483260.,
      481700.,  484040.,  486380.,  488720.,  550935.,  553630.,  556325.,
      559020.,  557130.,  559860.,  562590.,  565320.,  563325.,  566090.,
      568855.,  571620.,  569520.,  572320.,  575120.,  577920.,  638280.,
      641440.,  644600.,  647760.,  645280.,  648480.,  651680.,  654880.,
      652280.,  655520.,  658760.,  662000.,  659280.,  662560.,  665840.,
      669120.,  564375.,  567210.,  570045.,  572880.,  570430.,  573300.,
      576170.,  579040.,  576485.,  579390.,  582295.,  585200.,  582540.,
      585480.,  588420.,  591360.,  488630.,  491120.,  493610.,  496100.,
      493760.,  496280.,  498800.,  501320.,  498890.,  501440.,  503990.,
      506540.,  504020.,  506600.,  509180.,  511760.,  411125.,  413250.,
      415375.,  417500.,  415350.,  417500.,  419650.,  421800.,  419575.,
      421750.,  423925.,  426100.,  423800.,  426000.,  428200.,  430400.,
      531110.,  533780.,  536450.,  539120.,  536060.,  538760.,  541460.,
      544160.,  541010.,  543740.,  546470.,  549200.,  545960.,  548720.,
      551480.,  554240.,  643188.,  646464.,  649740.,  653016.,  649056.,
      652368.,  655680.,  658992.,  654924.,  658272.,  661620.,  664968.,
      660792.,  664176.,  667560.,  670944.,  756994.,  760900.,  764806.,
      768712.,  763756.,  767704.,  771652.,  775600.,  770518.,  774508.,
      778498.,  782488.,  777280.,  781312.,  785344.,  789376.,  872432.,
      876992.,  881552.,  886112.,  880064.,  884672.,  889280.,  893888.,
      887696.,  892352.,  897008.,  901664.,  895328.,  900032.,  904736.,
      909440.,  767746.,  771820.,  775894.,  779968.,  774340.,  778456.,
      782572.,  786688.,  780934.,  785092.,  789250.,  793408.,  787528.,
      791728.,  795928.,  800128.,  661620.,  665184.,  668748.,  672312.,
      667200.,  670800.,  674400.,  678000.,  672780.,  676416.,  680052.,
      683688.,  678360.,  682032.,  685704.,  689376.,  554150.,  557180.,
      560210.,  563240.,  558740.,  561800.,  564860.,  567920.,  563330.,
      566420.,  569510.,  572600.,  567920.,  571040.,  574160.,  577280.,
      692055.,  695730.,  699405.,  703080.,  697270.,  700980.,  704690.,
      708400.,  702485.,  706230.,  709975.,  713720.,  707700.,  711480.,
      715260.,  719040.,  834610.,  839104.,  843598.,  848092.,  840784.,
      845320.,  849856.,  854392.,  846958.,  851536.,  856114.,  860692.,
      853132.,  857752.,  862372.,  866992.,  978285.,  983626.,  988967.,
      994308.,  985390.,  990780.,  996170.,  1001560., 992495.,  997934.,
      1003373., 1008812., 999600.,  1005088., 1010576., 1016064., 1122968.,
      1129184., 1135400., 1141616., 1130976., 1137248., 1143520., 1149792.,
      1138984., 1145312., 1151640., 1157968., 1146992., 1153376., 1159760.,
      1166144., 984557.,  990094.,  995631.,  1001168., 991466.,  997052.,
      1002638., 1008224., 998375.,  1004010., 1009645., 1015280., 1005284.,
      1010968., 1016652., 1022336., 845362.,  850192.,  855022.,  859852.,
      851200.,  856072.,  860944.,  865816.,  857038.,  861952.,  866866.,
      871780.,  862876.,  867832.,  872788.,  877744.,  705495.,  709590.,
      713685.,  717780.,  710290.,  714420.,  718550.,  722680.,  715085.,
      719250.,  723415.,  727580.,  719880.,  724080.,  728280.,  732480.,
      860040.,  864880.,  869720.,  874560.,  865360.,  870240.,  875120.,
      880000.,  870680.,  875600.,  880520.,  885440.,  876000.,  880960.,
      885920.,  890880.,  1033712., 1039616., 1045520., 1051424., 1040000.,
      1045952., 1051904., 1057856., 1046288., 1052288., 1058288., 1064288.,
      1052576., 1058624., 1064672., 1070720., 1207640., 1214640., 1221640.,
      1228640., 1214864., 1221920., 1228976., 1236032., 1222088., 1229200.,
      1236312., 1243424., 1229312., 1236480., 1243648., 1250816., 1381696.,
      1389824., 1397952., 1406080., 1389824., 1398016., 1406208., 1414400.,
      1397952., 1406208., 1414464., 1422720., 1406080., 1414400., 1422720.,
      1431040., 1207640., 1214864., 1222088., 1229312., 1214640., 1221920.,
      1229200., 1236480., 1221640., 1228976., 1236312., 1243648., 1228640.,
      1236032., 1243424., 1250816., 1033712., 1040000., 1046288., 1052576.,
      1039616., 1045952., 1052288., 1058624., 1045520., 1051904., 1058288.,
      1064672., 1051424., 1057856., 1064288., 1070720., 860040.,  865360.,
      870680.,  876000.,  864880.,  870240.,  875600.,  880960.,  869720.,
      875120.,  880520.,  885920.,  874560.,  880000.,  885440.,  890880.,
      705495.,  710290.,  715085.,  719880.,  709590.,  714420.,  719250.,
      724080.,  713685.,  718550.,  723415.,  728280.,  717780.,  722680.,
      727580.,  732480.,  845362.,  851200.,  857038.,  862876.,  850192.,
      856072.,  861952.,  867832.,  855022.,  860944.,  866866.,  872788.,
      859852.,  865816.,  871780.,  877744.,  984557.,  991466.,  998375.,
      1005284., 990094.,  997052.,  1004010., 1010968., 995631.,  1002638.,
      1009645., 1016652., 1001168., 1008224., 1015280., 1022336., 1122968.,
      1130976., 1138984., 1146992., 1129184., 1137248., 1145312., 1153376.,
      1135400., 1143520., 1151640., 1159760., 1141616., 1149792., 1157968.,
      1166144., 978285.,  985390.,  992495.,  999600.,  983626.,  990780.,
      997934.,  1005088., 988967.,  996170.,  1003373., 1010576., 994308.,
      1001560., 1008812., 1016064., 834610.,  840784.,  846958.,  853132.,
      839104.,  845320.,  851536.,  857752.,  843598.,  849856.,  856114.,
      862372.,  848092.,  854392.,  860692.,  866992.,  692055.,  697270.,
      702485.,  707700.,  695730.,  700980.,  706230.,  711480.,  699405.,
      704690.,  709975.,  715260.,  703080.,  708400.,  713720.,  719040.,
      554150.,  558740.,  563330.,  567920.,  557180.,  561800.,  566420.,
      571040.,  560210.,  564860.,  569510.,  574160.,  563240.,  567920.,
      572600.,  577280.,  661620.,  667200.,  672780.,  678360.,  665184.,
      670800.,  676416.,  682032.,  668748.,  674400.,  680052.,  685704.,
      672312.,  678000.,  683688.,  689376.,  767746.,  774340.,  780934.,
      787528.,  771820.,  778456.,  785092.,  791728.,  775894.,  782572.,
      789250.,  795928.,  779968.,  786688.,  793408.,  800128.,  872432.,
      880064.,  887696.,  895328.,  876992.,  884672.,  892352.,  900032.,
      881552.,  889280.,  897008.,  904736.,  886112.,  893888.,  901664.,
      909440.,  756994.,  763756.,  770518.,  777280.,  760900.,  767704.,
      774508.,  781312.,  764806.,  771652.,  778498.,  785344.,  768712.,
      775600.,  782488.,  789376.,  643188.,  649056.,  654924.,  660792.,
      646464.,  652368.,  658272.,  664176.,  649740.,  655680.,  661620.,
      667560.,  653016.,  658992.,  664968.,  670944.,  531110.,  536060.,
      541010.,  545960.,  533780.,  538760.,  543740.,  548720.,  536450.,
      541460.,  546470.,  551480.,  539120.,  544160.,  549200.,  554240.,
      411125.,  415350.,  419575.,  423800.,  413250.,  417500.,  421750.,
      426000.,  415375.,  419650.,  423925.,  428200.,  417500.,  421800.,
      426100.,  430400.,  488630.,  493760.,  498890.,  504020.,  491120.,
      496280.,  501440.,  506600.,  493610.,  498800.,  503990.,  509180.,
      496100.,  501320.,  506540.,  511760.,  564375.,  570430.,  576485.,
      582540.,  567210.,  573300.,  579390.,  585480.,  570045.,  576170.,
      582295.,  588420.,  572880.,  579040.,  585200.,  591360.,  638280.,
      645280.,  652280.,  659280.,  641440.,  648480.,  655520.,  662560.,
      644600.,  651680.,  658760.,  665840.,  647760.,  654880.,  662000.,
      669120.,  550935.,  557130.,  563325.,  569520.,  553630.,  559860.,
      566090.,  572320.,  556325.,  562590.,  568855.,  575120.,  559020.,
      565320.,  571620.,  577920.,  465590.,  470960.,  476330.,  481700.,
      467840.,  473240.,  478640.,  484040.,  470090.,  475520.,  480950.,
      486380.,  472340.,  477800.,  483260.,  488720.,  382325.,  386850.,
      391375.,  395900.,  384150.,  388700.,  393250.,  397800.,  385975.,
      390550.,  395125.,  399700.,  387800.,  392400.,  397000.,  401600.};
  const std::array<int, 4> in_shape = {{1, 8, 8, 4}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, VALID1x8x8x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      804.,  880.,  956.,  1032., 832.,  912.,  992.,  1072., 860.,  944.,
      1028., 1112., 888.,  976.,  1064., 1152., 916.,  1008., 1100., 1192.,
      944.,  1040., 1136., 1232., 972.,  1072., 1172., 1272., 1000., 1104.,
      1208., 1312., 1028., 1136., 1244., 1352., 1056., 1168., 1280., 1392.,
      1084., 1200., 1316., 1432., 1112., 1232., 1352., 1472., 1140., 1264.,
      1388., 1512., 1168., 1296., 1424., 1552., 1196., 1328., 1460., 1592.,
      1224., 1360., 1496., 1632., 1252., 1392., 1532., 1672., 1280., 1424.,
      1568., 1712., 1308., 1456., 1604., 1752., 1336., 1488., 1640., 1792.,
      1364., 1520., 1676., 1832., 1392., 1552., 1712., 1872., 1420., 1584.,
      1748., 1912., 1448., 1616., 1784., 1952., 1476., 1648., 1820., 1992.,
      1504., 1680., 1856., 2032., 1532., 1712., 1892., 2072., 1560., 1744.,
      1928., 2112., 1700., 1904., 2108., 2312., 1728., 1936., 2144., 2352.,
      1756., 1968., 2180., 2392., 1784., 2000., 2216., 2432., 1812., 2032.,
      2252., 2472., 1840., 2064., 2288., 2512., 1868., 2096., 2324., 2552.,
      1896., 2128., 2360., 2592., 1924., 2160., 2396., 2632., 1952., 2192.,
      2432., 2672., 1980., 2224., 2468., 2712., 2008., 2256., 2504., 2752.,
      2036., 2288., 2540., 2792., 2064., 2320., 2576., 2832., 2092., 2352.,
      2612., 2872., 2120., 2384., 2648., 2912., 2148., 2416., 2684., 2952.,
      2176., 2448., 2720., 2992., 2204., 2480., 2756., 3032., 2232., 2512.,
      2792., 3072., 2260., 2544., 2828., 3112., 2288., 2576., 2864., 3152.,
      2316., 2608., 2900., 3192., 2344., 2640., 2936., 3232., 2372., 2672.,
      2972., 3272., 2400., 2704., 3008., 3312., 2428., 2736., 3044., 3352.,
      2456., 2768., 3080., 3392., 2596., 2928., 3260., 3592., 2624., 2960.,
      3296., 3632., 2652., 2992., 3332., 3672., 2680., 3024., 3368., 3712.,
      2708., 3056., 3404., 3752., 2736., 3088., 3440., 3792., 2764., 3120.,
      3476., 3832., 2792., 3152., 3512., 3872., 2820., 3184., 3548., 3912.,
      2848., 3216., 3584., 3952., 2876., 3248., 3620., 3992., 2904., 3280.,
      3656., 4032., 2932., 3312., 3692., 4072., 2960., 3344., 3728., 4112.,
      2988., 3376., 3764., 4152., 3016., 3408., 3800., 4192., 3044., 3440.,
      3836., 4232., 3072., 3472., 3872., 4272., 3100., 3504., 3908., 4312.,
      3128., 3536., 3944., 4352., 3156., 3568., 3980., 4392., 3184., 3600.,
      4016., 4432., 3212., 3632., 4052., 4472., 3240., 3664., 4088., 4512.,
      3268., 3696., 4124., 4552., 3296., 3728., 4160., 4592., 3324., 3760.,
      4196., 4632., 3352., 3792., 4232., 4672., 3492., 3952., 4412., 4872.,
      3520., 3984., 4448., 4912., 3548., 4016., 4484., 4952., 3576., 4048.,
      4520., 4992., 3604., 4080., 4556., 5032., 3632., 4112., 4592., 5072.,
      3660., 4144., 4628., 5112., 3688., 4176., 4664., 5152., 3716., 4208.,
      4700., 5192., 3744., 4240., 4736., 5232., 3772., 4272., 4772., 5272.,
      3800., 4304., 4808., 5312., 3828., 4336., 4844., 5352., 3856., 4368.,
      4880., 5392., 3884., 4400., 4916., 5432., 3912., 4432., 4952., 5472.,
      3940., 4464., 4988., 5512., 3968., 4496., 5024., 5552., 3996., 4528.,
      5060., 5592., 4024., 4560., 5096., 5632., 4052., 4592., 5132., 5672.,
      4080., 4624., 5168., 5712., 4108., 4656., 5204., 5752., 4136., 4688.,
      5240., 5792., 4164., 4720., 5276., 5832., 4192., 4752., 5312., 5872.,
      4220., 4784., 5348., 5912., 4248., 4816., 5384., 5952., 4388., 4976.,
      5564., 6152., 4416., 5008., 5600., 6192., 4444., 5040., 5636., 6232.,
      4472., 5072., 5672., 6272., 4500., 5104., 5708., 6312., 4528., 5136.,
      5744., 6352., 4556., 5168., 5780., 6392., 4584., 5200., 5816., 6432.,
      4612., 5232., 5852., 6472., 4640., 5264., 5888., 6512., 4668., 5296.,
      5924., 6552., 4696., 5328., 5960., 6592., 4724., 5360., 5996., 6632.,
      4752., 5392., 6032., 6672., 4780., 5424., 6068., 6712., 4808., 5456.,
      6104., 6752., 4836., 5488., 6140., 6792., 4864., 5520., 6176., 6832.,
      4892., 5552., 6212., 6872., 4920., 5584., 6248., 6912., 4948., 5616.,
      6284., 6952., 4976., 5648., 6320., 6992., 5004., 5680., 6356., 7032.,
      5032., 5712., 6392., 7072., 5060., 5744., 6428., 7112., 5088., 5776.,
      6464., 7152., 5116., 5808., 6500., 7192., 5144., 5840., 6536., 7232.,
      5284., 6000., 6716., 7432., 5312., 6032., 6752., 7472., 5340., 6064.,
      6788., 7512., 5368., 6096., 6824., 7552., 5396., 6128., 6860., 7592.,
      5424., 6160., 6896., 7632., 5452., 6192., 6932., 7672., 5480., 6224.,
      6968., 7712., 5508., 6256., 7004., 7752., 5536., 6288., 7040., 7792.,
      5564., 6320., 7076., 7832., 5592., 6352., 7112., 7872., 5620., 6384.,
      7148., 7912., 5648., 6416., 7184., 7952., 5676., 6448., 7220., 7992.,
      5704., 6480., 7256., 8032., 5732., 6512., 7292., 8072., 5760., 6544.,
      7328., 8112., 5788., 6576., 7364., 8152., 5816., 6608., 7400., 8192.,
      5844., 6640., 7436., 8232., 5872., 6672., 7472., 8272., 5900., 6704.,
      7508., 8312., 5928., 6736., 7544., 8352., 5956., 6768., 7580., 8392.,
      5984., 6800., 7616., 8432., 6012., 6832., 7652., 8472., 6040., 6864.,
      7688., 8512., 6180., 7024., 7868., 8712., 6208., 7056., 7904., 8752.,
      6236., 7088., 7940., 8792., 6264., 7120., 7976., 8832., 6292., 7152.,
      8012., 8872., 6320., 7184., 8048., 8912., 6348., 7216., 8084., 8952.,
      6376., 7248., 8120., 8992., 6404., 7280., 8156., 9032., 6432., 7312.,
      8192., 9072., 6460., 7344., 8228., 9112., 6488., 7376., 8264., 9152.,
      6516., 7408., 8300., 9192., 6544., 7440., 8336., 9232., 6572., 7472.,
      8372., 9272., 6600., 7504., 8408., 9312., 6628., 7536., 8444., 9352.,
      6656., 7568., 8480., 9392., 6684., 7600., 8516., 9432., 6712., 7632.,
      8552., 9472., 6740., 7664., 8588., 9512., 6768., 7696., 8624., 9552.,
      6796., 7728., 8660., 9592., 6824., 7760., 8696., 9632., 6852., 7792.,
      8732., 9672., 6880., 7824., 8768., 9712., 6908., 7856., 8804., 9752.,
      6936., 7888., 8840., 9792.};
  const std::array<int, 4> in_shape = {{1, 8, 8, 4}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, SAME1x8x9x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      38165., 45080., 52140.,  59340.,  53220.,  46970., 40595.,
      52602., 61845., 71208.,  80685.,  72072.,  63357., 54546.,
      68173., 79870., 91644.,  103488., 92148.,  80752., 69307.,
      84392., 98588., 112800., 127020., 112800., 98588., 84392.,
      69307., 80752., 92148.,  103488., 91644.,  79870., 68173.,
      54546., 63357., 72072.,  80685.,  71208.,  61845., 52602.,
      40595., 46970., 53220.,  59340.,  52140.,  45080., 38165.};
  const std::array<int, 4> in_shape = {{1, 8, 9, 1}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, VALID1x8x9x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      181.,  202.,  223.,  244.,  265.,  286.,  307.,  370.,  391.,  412.,
      433.,  454.,  475.,  496.,  559.,  580.,  601.,  622.,  643.,  664.,
      685.,  748.,  769.,  790.,  811.,  832.,  853.,  874.,  937.,  958.,
      979.,  1000., 1021., 1042., 1063., 1126., 1147., 1168., 1189., 1210.,
      1231., 1252., 1315., 1336., 1357., 1378., 1399., 1420., 1441.};
  const std::array<int, 4> in_shape = {{1, 8, 9, 1}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, SAME1x8x9x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      75685.,  76330.,  89390.,  90160.,  103380., 104280., 117645., 118680.,
      105500., 106440., 93100.,  93940.,  80455.,  81190.,  104268., 105204.,
      122577., 123690., 141120., 142416., 159885., 161370., 142800., 144144.,
      125517., 126714., 108048., 109092., 135065., 136346., 158221., 159740.,
      181524., 183288., 204960., 206976., 182476., 184296., 159887., 161504.,
      137207., 138614., 167104., 168784., 195188., 197176., 223296., 225600.,
      251412., 254040., 223232., 225600., 195076., 197176., 166960., 168784.,
      136955., 138614., 159544., 161504., 182028., 184296., 204393., 206976.,
      180964., 183288., 157682., 159740., 134561., 136346., 107508., 109092.,
      124845., 126714., 141984., 144144., 158913., 161370., 140208., 142416.,
      121737., 123690., 103512., 105204., 79735.,  81190.,  92225.,  93940.,
      104460., 106440., 116430., 118680., 102260., 104280., 88375.,  90160.,
      74785.,  76330.};
  const std::array<int, 4> in_shape = {{1, 8, 9, 1}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, VALID1x8x9x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      323.,  362.,  359.,  404.,  395.,  446.,  431.,  488.,  467.,  530.,
      503.,  572.,  539.,  614.,  647.,  740.,  683.,  782.,  719.,  824.,
      755.,  866.,  791.,  908.,  827.,  950.,  863.,  992.,  971.,  1118.,
      1007., 1160., 1043., 1202., 1079., 1244., 1115., 1286., 1151., 1328.,
      1187., 1370., 1295., 1496., 1331., 1538., 1367., 1580., 1403., 1622.,
      1439., 1664., 1475., 1706., 1511., 1748., 1619., 1874., 1655., 1916.,
      1691., 1958., 1727., 2000., 1763., 2042., 1799., 2084., 1835., 2126.,
      1943., 2252., 1979., 2294., 2015., 2336., 2051., 2378., 2087., 2420.,
      2123., 2462., 2159., 2504., 2267., 2630., 2303., 2672., 2339., 2714.,
      2375., 2756., 2411., 2798., 2447., 2840., 2483., 2882.};
  const std::array<int, 4> in_shape = {{1, 8, 9, 1}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, SAME1x8x9x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      150725., 151370., 152015., 152660., 178010., 178780., 179550., 180320.,
      205860., 206760., 207660., 208560., 234255., 235290., 236325., 237360.,
      210060., 211000., 211940., 212880., 185360., 186200., 187040., 187880.,
      160175., 160910., 161645., 162380., 207600., 208536., 209472., 210408.,
      244041., 245154., 246267., 247380., 280944., 282240., 283536., 284832.,
      318285., 319770., 321255., 322740., 284256., 285600., 286944., 288288.,
      249837., 251034., 252231., 253428., 215052., 216096., 217140., 218184.,
      268849., 270130., 271411., 272692., 314923., 316442., 317961., 319480.,
      361284., 363048., 364812., 366576., 407904., 409920., 411936., 413952.,
      363132., 364952., 366772., 368592., 318157., 319774., 321391., 323008.,
      273007., 274414., 275821., 277228., 332528., 334208., 335888., 337568.,
      388388., 390376., 392364., 394352., 444288., 446592., 448896., 451200.,
      500196., 502824., 505452., 508080., 444096., 446464., 448832., 451200.,
      388052., 390152., 392252., 394352., 332096., 333920., 335744., 337568.,
      272251., 273910., 275569., 277228., 317128., 319088., 321048., 323008.,
      361788., 364056., 366324., 368592., 406203., 408786., 411369., 413952.,
      359604., 361928., 364252., 366576., 313306., 315364., 317422., 319480.,
      267337., 269122., 270907., 272692., 213432., 215016., 216600., 218184.,
      247821., 249690., 251559., 253428., 281808., 283968., 286128., 288288.,
      315369., 317826., 320283., 322740., 278208., 280416., 282624., 284832.,
      241521., 243474., 245427., 247380., 205332., 207024., 208716., 210408.,
      158015., 159470., 160925., 162380., 182735., 184450., 186165., 187880.,
      206940., 208920., 210900., 212880., 230610., 232860., 235110., 237360.,
      202500., 204520., 206540., 208560., 174965., 176750., 178535., 180320.,
      148025., 149570., 151115., 152660.};
  const std::array<int, 4> in_shape = {{1, 8, 9, 1}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, VALID1x8x9x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      607.,  646.,  685.,  724.,  673.,  718.,  763.,  808.,  739.,  790.,
      841.,  892.,  805.,  862.,  919.,  976.,  871.,  934.,  997.,  1060.,
      937.,  1006., 1075., 1144., 1003., 1078., 1153., 1228., 1201., 1294.,
      1387., 1480., 1267., 1366., 1465., 1564., 1333., 1438., 1543., 1648.,
      1399., 1510., 1621., 1732., 1465., 1582., 1699., 1816., 1531., 1654.,
      1777., 1900., 1597., 1726., 1855., 1984., 1795., 1942., 2089., 2236.,
      1861., 2014., 2167., 2320., 1927., 2086., 2245., 2404., 1993., 2158.,
      2323., 2488., 2059., 2230., 2401., 2572., 2125., 2302., 2479., 2656.,
      2191., 2374., 2557., 2740., 2389., 2590., 2791., 2992., 2455., 2662.,
      2869., 3076., 2521., 2734., 2947., 3160., 2587., 2806., 3025., 3244.,
      2653., 2878., 3103., 3328., 2719., 2950., 3181., 3412., 2785., 3022.,
      3259., 3496., 2983., 3238., 3493., 3748., 3049., 3310., 3571., 3832.,
      3115., 3382., 3649., 3916., 3181., 3454., 3727., 4000., 3247., 3526.,
      3805., 4084., 3313., 3598., 3883., 4168., 3379., 3670., 3961., 4252.,
      3577., 3886., 4195., 4504., 3643., 3958., 4273., 4588., 3709., 4030.,
      4351., 4672., 3775., 4102., 4429., 4756., 3841., 4174., 4507., 4840.,
      3907., 4246., 4585., 4924., 3973., 4318., 4663., 5008., 4171., 4534.,
      4897., 5260., 4237., 4606., 4975., 5344., 4303., 4678., 5053., 5428.,
      4369., 4750., 5131., 5512., 4435., 4822., 5209., 5596., 4501., 4894.,
      5287., 5680., 4567., 4966., 5365., 5764.};
  const std::array<int, 4> in_shape = {{1, 8, 9, 1}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, SAME1x8x9x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      74785.,  76330.,  88375.,  90160.,  102260., 104280., 116430., 118680.,
      104460., 106440., 92225.,  93940.,  79735.,  81190.,  103512., 105204.,
      121737., 123690., 140208., 142416., 158913., 161370., 141984., 144144.,
      124845., 126714., 107508., 109092., 134561., 136346., 157682., 159740.,
      180964., 183288., 204393., 206976., 182028., 184296., 159544., 161504.,
      136955., 138614., 166960., 168784., 195076., 197176., 223232., 225600.,
      251412., 254040., 223296., 225600., 195188., 197176., 167104., 168784.,
      137207., 138614., 159887., 161504., 182476., 184296., 204960., 206976.,
      181524., 183288., 158221., 159740., 135065., 136346., 108048., 109092.,
      125517., 126714., 142800., 144144., 159885., 161370., 141120., 142416.,
      122577., 123690., 104268., 105204., 80455.,  81190.,  93100.,  93940.,
      105500., 106440., 117645., 118680., 103380., 104280., 89390.,  90160.,
      75685.,  76330.};
  const std::array<int, 4> in_shape = {{1, 8, 9, 2}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, VALID1x8x9x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      341.,  362.,  383.,  404.,  425.,  446.,  467.,  488.,  509.,  530.,
      551.,  572.,  593.,  614.,  719.,  740.,  761.,  782.,  803.,  824.,
      845.,  866.,  887.,  908.,  929.,  950.,  971.,  992.,  1097., 1118.,
      1139., 1160., 1181., 1202., 1223., 1244., 1265., 1286., 1307., 1328.,
      1349., 1370., 1475., 1496., 1517., 1538., 1559., 1580., 1601., 1622.,
      1643., 1664., 1685., 1706., 1727., 1748., 1853., 1874., 1895., 1916.,
      1937., 1958., 1979., 2000., 2021., 2042., 2063., 2084., 2105., 2126.,
      2231., 2252., 2273., 2294., 2315., 2336., 2357., 2378., 2399., 2420.,
      2441., 2462., 2483., 2504., 2609., 2630., 2651., 2672., 2693., 2714.,
      2735., 2756., 2777., 2798., 2819., 2840., 2861., 2882.};
  const std::array<int, 4> in_shape = {{1, 8, 9, 2}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, SAME1x8x9x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      148310., 149570., 151370., 152660., 175245., 176750., 178780., 180320.,
      202760., 204520., 206760., 208560., 230835., 232860., 235290., 237360.,
      207080., 208920., 211000., 212880., 182805., 184450., 186200., 187880.,
      158030., 159470., 160910., 162380., 205188., 207024., 208536., 210408.,
      241290., 243474., 245154., 247380., 277872., 280416., 282240., 284832.,
      314910., 317826., 319770., 322740., 281328., 283968., 285600., 288288.,
      247338., 249690., 251034., 253428., 212964., 215016., 216096., 218184.,
      266602., 269122., 270130., 272692., 312375., 315364., 316442., 319480.,
      358456., 361928., 363048., 366576., 404817., 408786., 409920., 413952.,
      360472., 364056., 364952., 368592., 315903., 319088., 319774., 323008.,
      271138., 273910., 274414., 277228., 330608., 333920., 334208., 337568.,
      386232., 390152., 390376., 394352., 441920., 446464., 446592., 451200.,
      497640., 502824., 502824., 508080., 441920., 446592., 446464., 451200.,
      386232., 390376., 390152., 394352., 330608., 334208., 333920., 337568.,
      271138., 274414., 273910., 277228., 315903., 319774., 319088., 323008.,
      360472., 364952., 364056., 368592., 404817., 409920., 408786., 413952.,
      358456., 363048., 361928., 366576., 312375., 316442., 315364., 319480.,
      266602., 270130., 269122., 272692., 212964., 216096., 215016., 218184.,
      247338., 251034., 249690., 253428., 281328., 285600., 283968., 288288.,
      314910., 319770., 317826., 322740., 277872., 282240., 280416., 284832.,
      241290., 245154., 243474., 247380., 205188., 208536., 207024., 210408.,
      158030., 160910., 159470., 162380., 182805., 186200., 184450., 187880.,
      207080., 211000., 208920., 212880., 230835., 235290., 232860., 237360.,
      202760., 206760., 204520., 208560., 175245., 178780., 176750., 180320.,
      148310., 151370., 149570., 152660.};
  const std::array<int, 4> in_shape = {{1, 8, 9, 2}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, VALID1x8x9x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      610.,  682.,  646.,  724.,  682.,  766.,  718.,  808.,  754.,  850.,
      790.,  892.,  826.,  934.,  862.,  976.,  898.,  1018., 934.,  1060.,
      970.,  1102., 1006., 1144., 1042., 1186., 1078., 1228., 1258., 1438.,
      1294., 1480., 1330., 1522., 1366., 1564., 1402., 1606., 1438., 1648.,
      1474., 1690., 1510., 1732., 1546., 1774., 1582., 1816., 1618., 1858.,
      1654., 1900., 1690., 1942., 1726., 1984., 1906., 2194., 1942., 2236.,
      1978., 2278., 2014., 2320., 2050., 2362., 2086., 2404., 2122., 2446.,
      2158., 2488., 2194., 2530., 2230., 2572., 2266., 2614., 2302., 2656.,
      2338., 2698., 2374., 2740., 2554., 2950., 2590., 2992., 2626., 3034.,
      2662., 3076., 2698., 3118., 2734., 3160., 2770., 3202., 2806., 3244.,
      2842., 3286., 2878., 3328., 2914., 3370., 2950., 3412., 2986., 3454.,
      3022., 3496., 3202., 3706., 3238., 3748., 3274., 3790., 3310., 3832.,
      3346., 3874., 3382., 3916., 3418., 3958., 3454., 4000., 3490., 4042.,
      3526., 4084., 3562., 4126., 3598., 4168., 3634., 4210., 3670., 4252.,
      3850., 4462., 3886., 4504., 3922., 4546., 3958., 4588., 3994., 4630.,
      4030., 4672., 4066., 4714., 4102., 4756., 4138., 4798., 4174., 4840.,
      4210., 4882., 4246., 4924., 4282., 4966., 4318., 5008., 4498., 5218.,
      4534., 5260., 4570., 5302., 4606., 5344., 4642., 5386., 4678., 5428.,
      4714., 5470., 4750., 5512., 4786., 5554., 4822., 5596., 4858., 5638.,
      4894., 5680., 4930., 5722., 4966., 5764.};
  const std::array<int, 4> in_shape = {{1, 8, 9, 2}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, SAME1x8x9x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      295360.,  296620.,  297880.,  299140.,  301450., 302740.,  304030.,
      305320.,  348985.,  350490.,  351995.,  353500., 356020.,  357560.,
      359100.,  360640.,  403760.,  405520.,  407280., 409040.,  411720.,
      413520.,  415320.,  417120.,  459645.,  461670., 463695.,  465720.,
      468510.,  470580.,  472650.,  474720.,  412320., 414160.,  416000.,
      417840.,  420120.,  422000.,  423880.,  425760., 363965.,  365610.,
      367255.,  368900.,  370720.,  372400.,  374080., 375760.,  314620.,
      316060.,  317500.,  318940.,  320350.,  321820., 323290.,  324760.,
      408540.,  410376.,  412212.,  414048.,  415200., 417072.,  418944.,
      420816.,  480396.,  482580.,  484764.,  486948., 488082.,  490308.,
      492534.,  494760.,  553200.,  555744.,  558288., 560832.,  561888.,
      564480.,  567072.,  569664.,  626904.,  629820., 632736.,  635652.,
      636570.,  639540.,  642510.,  645480.,  560016., 562656.,  565296.,
      567936.,  568512.,  571200.,  573888.,  576576., 492324.,  494676.,
      497028.,  499380.,  499674.,  502068.,  504462., 506856.,  423876.,
      425928.,  427980.,  430032.,  430104.,  432192., 434280.,  436368.,
      530684.,  533204.,  535724.,  538244.,  537698., 540260.,  542822.,
      545384.,  621761.,  624750.,  627739.,  630728., 629846.,  632884.,
      635922.,  638960.,  713440.,  716912.,  720384., 723856.,  722568.,
      726096.,  729624.,  733152.,  805665.,  809634., 813603.,  817572.,
      815808.,  819840.,  823872.,  827904.,  717360., 720944.,  724528.,
      728112.,  726264.,  729904.,  733544.,  737184., 628621.,  631806.,
      634991.,  638176.,  636314.,  639548.,  642782., 646016.,  539504.,
      542276.,  545048.,  547820.,  546014.,  548828., 551642.,  554456.,
      657904.,  661216.,  664528.,  667840.,  665056., 668416.,  671776.,
      675136.,  768544.,  772464.,  776384.,  780304., 776776.,  780752.,
      784728.,  788704.,  879296.,  883840.,  888384., 892928.,  888576.,
      893184.,  897792.,  902400.,  990096.,  995280., 1000464., 1005648.,
      1000392., 1005648., 1010904., 1016160., 879168., 883840.,  888512.,
      893184.,  888192.,  892928.,  897664.,  902400., 768320.,  772464.,
      776608.,  780752.,  776104.,  780304.,  784504., 788704.,  657616.,
      661216.,  664816.,  668416.,  664192.,  667840., 671488.,  675136.,
      539000.,  542276.,  545552.,  548828.,  544502., 547820.,  551138.,
      554456.,  627935.,  631806.,  635677.,  639548., 634256.,  638176.,
      642096.,  646016.,  716464.,  720944.,  725424., 729904.,  723576.,
      728112.,  732648.,  737184.,  804531.,  809634., 814737.,  819840.,
      812406.,  817572.,  822738.,  827904.,  712320., 716912.,  721504.,
      726096.,  719208.,  723856.,  728504.,  733152., 620683.,  624750.,
      628817.,  632884.,  626612.,  630728.,  634844., 638960.,  529676.,
      533204.,  536732.,  540260.,  534674.,  538244., 541814.,  545384.,
      422796.,  425928.,  429060.,  432192.,  426864., 430032.,  433200.,
      436368.,  490980.,  494676.,  498372.,  502068., 495642.,  499380.,
      503118.,  506856.,  558384.,  562656.,  566928., 571200.,  563616.,
      567936.,  572256.,  576576.,  624960.,  629820., 634680.,  639540.,
      630738.,  635652.,  640566.,  645480.,  551376., 555744.,  560112.,
      564480.,  556416.,  560832.,  565248.,  569664., 478716.,  482580.,
      486444.,  490308.,  483042.,  486948.,  490854., 494760.,  407028.,
      410376.,  413724.,  417072.,  410664.,  414048., 417432.,  420816.,
      313180.,  316060.,  318940.,  321820.,  316030., 318940.,  321850.,
      324760.,  362215.,  365610.,  369005.,  372400., 365470.,  368900.,
      372330.,  375760.,  410240.,  414160.,  418080., 422000.,  413880.,
      417840.,  421800.,  425760.,  457215.,  461670., 466125.,  470580.,
      461220.,  465720.,  470220.,  474720.,  401520., 405520.,  409520.,
      413520.,  405000.,  409040.,  413080.,  417120., 346955.,  350490.,
      354025.,  357560.,  349930.,  353500.,  357070., 360640.,  293560.,
      296620.,  299680.,  302740.,  296050.,  299140., 302230.,  305320.};
  const std::array<int, 4> in_shape = {{1, 8, 9, 2}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, VALID1x8x9x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1148.,  1220.,  1292.,  1364.,  1214.,  1292.,  1370.,  1448.,  1280.,
      1364.,  1448.,  1532.,  1346.,  1436.,  1526.,  1616.,  1412.,  1508.,
      1604.,  1700.,  1478.,  1580.,  1682.,  1784.,  1544.,  1652.,  1760.,
      1868.,  1610.,  1724.,  1838.,  1952.,  1676.,  1796.,  1916.,  2036.,
      1742.,  1868.,  1994.,  2120.,  1808.,  1940.,  2072.,  2204.,  1874.,
      2012.,  2150.,  2288.,  1940.,  2084.,  2228.,  2372.,  2006.,  2156.,
      2306.,  2456.,  2336.,  2516.,  2696.,  2876.,  2402.,  2588.,  2774.,
      2960.,  2468.,  2660.,  2852.,  3044.,  2534.,  2732.,  2930.,  3128.,
      2600.,  2804.,  3008.,  3212.,  2666.,  2876.,  3086.,  3296.,  2732.,
      2948.,  3164.,  3380.,  2798.,  3020.,  3242.,  3464.,  2864.,  3092.,
      3320.,  3548.,  2930.,  3164.,  3398.,  3632.,  2996.,  3236.,  3476.,
      3716.,  3062.,  3308.,  3554.,  3800.,  3128.,  3380.,  3632.,  3884.,
      3194.,  3452.,  3710.,  3968.,  3524.,  3812.,  4100.,  4388.,  3590.,
      3884.,  4178.,  4472.,  3656.,  3956.,  4256.,  4556.,  3722.,  4028.,
      4334.,  4640.,  3788.,  4100.,  4412.,  4724.,  3854.,  4172.,  4490.,
      4808.,  3920.,  4244.,  4568.,  4892.,  3986.,  4316.,  4646.,  4976.,
      4052.,  4388.,  4724.,  5060.,  4118.,  4460.,  4802.,  5144.,  4184.,
      4532.,  4880.,  5228.,  4250.,  4604.,  4958.,  5312.,  4316.,  4676.,
      5036.,  5396.,  4382.,  4748.,  5114.,  5480.,  4712.,  5108.,  5504.,
      5900.,  4778.,  5180.,  5582.,  5984.,  4844.,  5252.,  5660.,  6068.,
      4910.,  5324.,  5738.,  6152.,  4976.,  5396.,  5816.,  6236.,  5042.,
      5468.,  5894.,  6320.,  5108.,  5540.,  5972.,  6404.,  5174.,  5612.,
      6050.,  6488.,  5240.,  5684.,  6128.,  6572.,  5306.,  5756.,  6206.,
      6656.,  5372.,  5828.,  6284.,  6740.,  5438.,  5900.,  6362.,  6824.,
      5504.,  5972.,  6440.,  6908.,  5570.,  6044.,  6518.,  6992.,  5900.,
      6404.,  6908.,  7412.,  5966.,  6476.,  6986.,  7496.,  6032.,  6548.,
      7064.,  7580.,  6098.,  6620.,  7142.,  7664.,  6164.,  6692.,  7220.,
      7748.,  6230.,  6764.,  7298.,  7832.,  6296.,  6836.,  7376.,  7916.,
      6362.,  6908.,  7454.,  8000.,  6428.,  6980.,  7532.,  8084.,  6494.,
      7052.,  7610.,  8168.,  6560.,  7124.,  7688.,  8252.,  6626.,  7196.,
      7766.,  8336.,  6692.,  7268.,  7844.,  8420.,  6758.,  7340.,  7922.,
      8504.,  7088.,  7700.,  8312.,  8924.,  7154.,  7772.,  8390.,  9008.,
      7220.,  7844.,  8468.,  9092.,  7286.,  7916.,  8546.,  9176.,  7352.,
      7988.,  8624.,  9260.,  7418.,  8060.,  8702.,  9344.,  7484.,  8132.,
      8780.,  9428.,  7550.,  8204.,  8858.,  9512.,  7616.,  8276.,  8936.,
      9596.,  7682.,  8348.,  9014.,  9680.,  7748.,  8420.,  9092.,  9764.,
      7814.,  8492.,  9170.,  9848.,  7880.,  8564.,  9248.,  9932.,  7946.,
      8636.,  9326.,  10016., 8276.,  8996.,  9716.,  10436., 8342.,  9068.,
      9794.,  10520., 8408.,  9140.,  9872.,  10604., 8474.,  9212.,  9950.,
      10688., 8540.,  9284.,  10028., 10772., 8606.,  9356.,  10106., 10856.,
      8672.,  9428.,  10184., 10940., 8738.,  9500.,  10262., 11024., 8804.,
      9572.,  10340., 11108., 8870.,  9644.,  10418., 11192., 8936.,  9716.,
      10496., 11276., 9002.,  9788.,  10574., 11360., 9068.,  9860.,  10652.,
      11444., 9134.,  9932.,  10730., 11528.};
  const std::array<int, 4> in_shape = {{1, 8, 9, 2}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, SAME1x8x9x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      148025., 149570., 151115., 152660., 174965., 176750., 178535., 180320.,
      202500., 204520., 206540., 208560., 230610., 232860., 235110., 237360.,
      206940., 208920., 210900., 212880., 182735., 184450., 186165., 187880.,
      158015., 159470., 160925., 162380., 205332., 207024., 208716., 210408.,
      241521., 243474., 245427., 247380., 278208., 280416., 282624., 284832.,
      315369., 317826., 320283., 322740., 281808., 283968., 286128., 288288.,
      247821., 249690., 251559., 253428., 213432., 215016., 216600., 218184.,
      267337., 269122., 270907., 272692., 313306., 315364., 317422., 319480.,
      359604., 361928., 364252., 366576., 406203., 408786., 411369., 413952.,
      361788., 364056., 366324., 368592., 317128., 319088., 321048., 323008.,
      272251., 273910., 275569., 277228., 332096., 333920., 335744., 337568.,
      388052., 390152., 392252., 394352., 444096., 446464., 448832., 451200.,
      500196., 502824., 505452., 508080., 444288., 446592., 448896., 451200.,
      388388., 390376., 392364., 394352., 332528., 334208., 335888., 337568.,
      273007., 274414., 275821., 277228., 318157., 319774., 321391., 323008.,
      363132., 364952., 366772., 368592., 407904., 409920., 411936., 413952.,
      361284., 363048., 364812., 366576., 314923., 316442., 317961., 319480.,
      268849., 270130., 271411., 272692., 215052., 216096., 217140., 218184.,
      249837., 251034., 252231., 253428., 284256., 285600., 286944., 288288.,
      318285., 319770., 321255., 322740., 280944., 282240., 283536., 284832.,
      244041., 245154., 246267., 247380., 207600., 208536., 209472., 210408.,
      160175., 160910., 161645., 162380., 185360., 186200., 187040., 187880.,
      210060., 211000., 211940., 212880., 234255., 235290., 236325., 237360.,
      205860., 206760., 207660., 208560., 178010., 178780., 179550., 180320.,
      150725., 151370., 152015., 152660.};
  const std::array<int, 4> in_shape = {{1, 8, 9, 4}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, VALID1x8x9x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      661.,  682.,  703.,  724.,  745.,  766.,  787.,  808.,  829.,  850.,
      871.,  892.,  913.,  934.,  955.,  976.,  997.,  1018., 1039., 1060.,
      1081., 1102., 1123., 1144., 1165., 1186., 1207., 1228., 1417., 1438.,
      1459., 1480., 1501., 1522., 1543., 1564., 1585., 1606., 1627., 1648.,
      1669., 1690., 1711., 1732., 1753., 1774., 1795., 1816., 1837., 1858.,
      1879., 1900., 1921., 1942., 1963., 1984., 2173., 2194., 2215., 2236.,
      2257., 2278., 2299., 2320., 2341., 2362., 2383., 2404., 2425., 2446.,
      2467., 2488., 2509., 2530., 2551., 2572., 2593., 2614., 2635., 2656.,
      2677., 2698., 2719., 2740., 2929., 2950., 2971., 2992., 3013., 3034.,
      3055., 3076., 3097., 3118., 3139., 3160., 3181., 3202., 3223., 3244.,
      3265., 3286., 3307., 3328., 3349., 3370., 3391., 3412., 3433., 3454.,
      3475., 3496., 3685., 3706., 3727., 3748., 3769., 3790., 3811., 3832.,
      3853., 3874., 3895., 3916., 3937., 3958., 3979., 4000., 4021., 4042.,
      4063., 4084., 4105., 4126., 4147., 4168., 4189., 4210., 4231., 4252.,
      4441., 4462., 4483., 4504., 4525., 4546., 4567., 4588., 4609., 4630.,
      4651., 4672., 4693., 4714., 4735., 4756., 4777., 4798., 4819., 4840.,
      4861., 4882., 4903., 4924., 4945., 4966., 4987., 5008., 5197., 5218.,
      5239., 5260., 5281., 5302., 5323., 5344., 5365., 5386., 5407., 5428.,
      5449., 5470., 5491., 5512., 5533., 5554., 5575., 5596., 5617., 5638.,
      5659., 5680., 5701., 5722., 5743., 5764.};
  const std::array<int, 4> in_shape = {{1, 8, 9, 4}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, SAME1x8x9x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      293560.,  296050.,  296620.,  299140.,  299680.,  302230., 302740.,
      305320.,  346955.,  349930.,  350490.,  353500.,  354025., 357070.,
      357560.,  360640.,  401520.,  405000.,  405520.,  409040., 409520.,
      413080.,  413520.,  417120.,  457215.,  461220.,  461670., 465720.,
      466125.,  470220.,  470580.,  474720.,  410240.,  413880., 414160.,
      417840.,  418080.,  421800.,  422000.,  425760.,  362215., 365470.,
      365610.,  368900.,  369005.,  372330.,  372400.,  375760., 313180.,
      316030.,  316060.,  318940.,  318940.,  321850.,  321820., 324760.,
      407028.,  410664.,  410376.,  414048.,  413724.,  417432., 417072.,
      420816.,  478716.,  483042.,  482580.,  486948.,  486444., 490854.,
      490308.,  494760.,  551376.,  556416.,  555744.,  560832., 560112.,
      565248.,  564480.,  569664.,  624960.,  630738.,  629820., 635652.,
      634680.,  640566.,  639540.,  645480.,  558384.,  563616., 562656.,
      567936.,  566928.,  572256.,  571200.,  576576.,  490980., 495642.,
      494676.,  499380.,  498372.,  503118.,  502068.,  506856., 422796.,
      426864.,  425928.,  430032.,  429060.,  433200.,  432192., 436368.,
      529676.,  534674.,  533204.,  538244.,  536732.,  541814., 540260.,
      545384.,  620683.,  626612.,  624750.,  630728.,  628817., 634844.,
      632884.,  638960.,  712320.,  719208.,  716912.,  723856., 721504.,
      728504.,  726096.,  733152.,  804531.,  812406.,  809634., 817572.,
      814737.,  822738.,  819840.,  827904.,  716464.,  723576., 720944.,
      728112.,  725424.,  732648.,  729904.,  737184.,  627935., 634256.,
      631806.,  638176.,  635677.,  642096.,  639548.,  646016., 539000.,
      544502.,  542276.,  547820.,  545552.,  551138.,  548828., 554456.,
      657616.,  664192.,  661216.,  667840.,  664816.,  671488., 668416.,
      675136.,  768320.,  776104.,  772464.,  780304.,  776608., 784504.,
      780752.,  788704.,  879168.,  888192.,  883840.,  892928., 888512.,
      897664.,  893184.,  902400.,  990096.,  1000392., 995280., 1005648.,
      1000464., 1010904., 1005648., 1016160., 879296.,  888576., 883840.,
      893184.,  888384.,  897792.,  892928.,  902400.,  768544., 776776.,
      772464.,  780752.,  776384.,  784728.,  780304.,  788704., 657904.,
      665056.,  661216.,  668416.,  664528.,  671776.,  667840., 675136.,
      539504.,  546014.,  542276.,  548828.,  545048.,  551642., 547820.,
      554456.,  628621.,  636314.,  631806.,  639548.,  634991., 642782.,
      638176.,  646016.,  717360.,  726264.,  720944.,  729904., 724528.,
      733544.,  728112.,  737184.,  805665.,  815808.,  809634., 819840.,
      813603.,  823872.,  817572.,  827904.,  713440.,  722568., 716912.,
      726096.,  720384.,  729624.,  723856.,  733152.,  621761., 629846.,
      624750.,  632884.,  627739.,  635922.,  630728.,  638960., 530684.,
      537698.,  533204.,  540260.,  535724.,  542822.,  538244., 545384.,
      423876.,  430104.,  425928.,  432192.,  427980.,  434280., 430032.,
      436368.,  492324.,  499674.,  494676.,  502068.,  497028., 504462.,
      499380.,  506856.,  560016.,  568512.,  562656.,  571200., 565296.,
      573888.,  567936.,  576576.,  626904.,  636570.,  629820., 639540.,
      632736.,  642510.,  635652.,  645480.,  553200.,  561888., 555744.,
      564480.,  558288.,  567072.,  560832.,  569664.,  480396., 488082.,
      482580.,  490308.,  484764.,  492534.,  486948.,  494760., 408540.,
      415200.,  410376.,  417072.,  412212.,  418944.,  414048., 420816.,
      314620.,  320350.,  316060.,  321820.,  317500.,  323290., 318940.,
      324760.,  363965.,  370720.,  365610.,  372400.,  367255., 374080.,
      368900.,  375760.,  412320.,  420120.,  414160.,  422000., 416000.,
      423880.,  417840.,  425760.,  459645.,  468510.,  461670., 470580.,
      463695.,  472650.,  465720.,  474720.,  403760.,  411720., 405520.,
      413520.,  407280.,  415320.,  409040.,  417120.,  348985., 356020.,
      350490.,  357560.,  351995.,  359100.,  353500.,  360640., 295360.,
      301450.,  296620.,  302740.,  297880.,  304030.,  299140., 305320.};
  const std::array<int, 4> in_shape = {{1, 8, 9, 4}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, VALID1x8x9x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1184., 1322.,  1220., 1364.,  1256., 1406.,  1292., 1448.,  1328., 1490.,
      1364., 1532.,  1400., 1574.,  1436., 1616.,  1472., 1658.,  1508., 1700.,
      1544., 1742.,  1580., 1784.,  1616., 1826.,  1652., 1868.,  1688., 1910.,
      1724., 1952.,  1760., 1994.,  1796., 2036.,  1832., 2078.,  1868., 2120.,
      1904., 2162.,  1940., 2204.,  1976., 2246.,  2012., 2288.,  2048., 2330.,
      2084., 2372.,  2120., 2414.,  2156., 2456.,  2480., 2834.,  2516., 2876.,
      2552., 2918.,  2588., 2960.,  2624., 3002.,  2660., 3044.,  2696., 3086.,
      2732., 3128.,  2768., 3170.,  2804., 3212.,  2840., 3254.,  2876., 3296.,
      2912., 3338.,  2948., 3380.,  2984., 3422.,  3020., 3464.,  3056., 3506.,
      3092., 3548.,  3128., 3590.,  3164., 3632.,  3200., 3674.,  3236., 3716.,
      3272., 3758.,  3308., 3800.,  3344., 3842.,  3380., 3884.,  3416., 3926.,
      3452., 3968.,  3776., 4346.,  3812., 4388.,  3848., 4430.,  3884., 4472.,
      3920., 4514.,  3956., 4556.,  3992., 4598.,  4028., 4640.,  4064., 4682.,
      4100., 4724.,  4136., 4766.,  4172., 4808.,  4208., 4850.,  4244., 4892.,
      4280., 4934.,  4316., 4976.,  4352., 5018.,  4388., 5060.,  4424., 5102.,
      4460., 5144.,  4496., 5186.,  4532., 5228.,  4568., 5270.,  4604., 5312.,
      4640., 5354.,  4676., 5396.,  4712., 5438.,  4748., 5480.,  5072., 5858.,
      5108., 5900.,  5144., 5942.,  5180., 5984.,  5216., 6026.,  5252., 6068.,
      5288., 6110.,  5324., 6152.,  5360., 6194.,  5396., 6236.,  5432., 6278.,
      5468., 6320.,  5504., 6362.,  5540., 6404.,  5576., 6446.,  5612., 6488.,
      5648., 6530.,  5684., 6572.,  5720., 6614.,  5756., 6656.,  5792., 6698.,
      5828., 6740.,  5864., 6782.,  5900., 6824.,  5936., 6866.,  5972., 6908.,
      6008., 6950.,  6044., 6992.,  6368., 7370.,  6404., 7412.,  6440., 7454.,
      6476., 7496.,  6512., 7538.,  6548., 7580.,  6584., 7622.,  6620., 7664.,
      6656., 7706.,  6692., 7748.,  6728., 7790.,  6764., 7832.,  6800., 7874.,
      6836., 7916.,  6872., 7958.,  6908., 8000.,  6944., 8042.,  6980., 8084.,
      7016., 8126.,  7052., 8168.,  7088., 8210.,  7124., 8252.,  7160., 8294.,
      7196., 8336.,  7232., 8378.,  7268., 8420.,  7304., 8462.,  7340., 8504.,
      7664., 8882.,  7700., 8924.,  7736., 8966.,  7772., 9008.,  7808., 9050.,
      7844., 9092.,  7880., 9134.,  7916., 9176.,  7952., 9218.,  7988., 9260.,
      8024., 9302.,  8060., 9344.,  8096., 9386.,  8132., 9428.,  8168., 9470.,
      8204., 9512.,  8240., 9554.,  8276., 9596.,  8312., 9638.,  8348., 9680.,
      8384., 9722.,  8420., 9764.,  8456., 9806.,  8492., 9848.,  8528., 9890.,
      8564., 9932.,  8600., 9974.,  8636., 10016., 8960., 10394., 8996., 10436.,
      9032., 10478., 9068., 10520., 9104., 10562., 9140., 10604., 9176., 10646.,
      9212., 10688., 9248., 10730., 9284., 10772., 9320., 10814., 9356., 10856.,
      9392., 10898., 9428., 10940., 9464., 10982., 9500., 11024., 9536., 11066.,
      9572., 11108., 9608., 11150., 9644., 11192., 9680., 11234., 9716., 11276.,
      9752., 11318., 9788., 11360., 9824., 11402., 9860., 11444., 9896., 11486.,
      9932., 11528.};
  const std::array<int, 4> in_shape = {{1, 8, 9, 4}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, SAME1x8x9x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      584630.,  587120.,  589610.,  592100.,  590720.,  593240.,  595760.,
      598280.,  596810.,  599360.,  601910.,  604460.,  602900.,  605480.,
      608060.,  610640.,  690935.,  693910.,  696885.,  699860.,  697970.,
      700980.,  703990.,  707000.,  705005.,  708050.,  711095.,  714140.,
      712040.,  715120.,  718200.,  721280.,  799560.,  803040.,  806520.,
      810000.,  807520.,  811040.,  814560.,  818080.,  815480.,  819040.,
      822600.,  826160.,  823440.,  827040.,  830640.,  834240.,  910425.,
      914430.,  918435.,  922440.,  919290.,  923340.,  927390.,  931440.,
      928155.,  932250.,  936345.,  940440.,  937020.,  941160.,  945300.,
      949440.,  816840.,  820480.,  824120.,  827760.,  824640.,  828320.,
      832000.,  835680.,  832440.,  836160.,  839880.,  843600.,  840240.,
      844000.,  847760.,  851520.,  721175.,  724430.,  727685.,  730940.,
      727930.,  731220.,  734510.,  737800.,  734685.,  738010.,  741335.,
      744660.,  741440.,  744800.,  748160.,  751520.,  623510.,  626360.,
      629210.,  632060.,  629240.,  632120.,  635000.,  637880.,  634970.,
      637880.,  640790.,  643700.,  640700.,  643640.,  646580.,  649520.,
      810420.,  814056.,  817692.,  821328.,  817080.,  820752.,  824424.,
      828096.,  823740.,  827448.,  831156.,  834864.,  830400.,  834144.,
      837888.,  841632.,  953106.,  957432.,  961758.,  966084.,  960792.,
      965160.,  969528.,  973896.,  968478.,  972888.,  977298.,  981708.,
      976164.,  980616.,  985068.,  989520.,  1097712., 1102752., 1107792.,
      1112832., 1106400., 1111488., 1116576., 1121664., 1115088., 1120224.,
      1125360., 1130496., 1123776., 1128960., 1134144., 1139328., 1244142.,
      1249920., 1255698., 1261476., 1253808., 1259640., 1265472., 1271304.,
      1263474., 1269360., 1275246., 1281132., 1273140., 1279080., 1285020.,
      1290960., 1111536., 1116768., 1122000., 1127232., 1120032., 1125312.,
      1130592., 1135872., 1128528., 1133856., 1139184., 1144512., 1137024.,
      1142400., 1147776., 1153152., 977298.,  981960.,  986622.,  991284.,
      984648.,  989352.,  994056.,  998760.,  991998.,  996744.,  1001490.,
      1006236., 999348.,  1004136., 1008924., 1013712., 841524.,  845592.,
      849660.,  853728.,  847752.,  851856.,  855960.,  860064.,  853980.,
      858120.,  862260.,  866400.,  860208.,  864384.,  868560.,  872736.,
      1054354., 1059352., 1064350., 1069348., 1061368., 1066408., 1071448.,
      1076488., 1068382., 1073464., 1078546., 1083628., 1075396., 1080520.,
      1085644., 1090768., 1235437., 1241366., 1247295., 1253224., 1243522.,
      1249500., 1255478., 1261456., 1251607., 1257634., 1263661., 1269688.,
      1259692., 1265768., 1271844., 1277920., 1417752., 1424640., 1431528.,
      1438416., 1426880., 1433824., 1440768., 1447712., 1436008., 1443008.,
      1450008., 1457008., 1445136., 1452192., 1459248., 1466304., 1601187.,
      1609062., 1616937., 1624812., 1611330., 1619268., 1627206., 1635144.,
      1621473., 1629474., 1637475., 1645476., 1631616., 1639680., 1647744.,
      1655808., 1425816., 1432928., 1440040., 1447152., 1434720., 1441888.,
      1449056., 1456224., 1443624., 1450848., 1458072., 1465296., 1452528.,
      1459808., 1467088., 1474368., 1249549., 1255870., 1262191., 1268512.,
      1257242., 1263612., 1269982., 1276352., 1264935., 1271354., 1277773.,
      1284192., 1272628., 1279096., 1285564., 1292032., 1072498., 1078000.,
      1083502., 1089004., 1079008., 1084552., 1090096., 1095640., 1085518.,
      1091104., 1096690., 1102276., 1092028., 1097656., 1103284., 1108912.,
      1308656., 1315232., 1321808., 1328384., 1315808., 1322432., 1329056.,
      1335680., 1322960., 1329632., 1336304., 1342976., 1330112., 1336832.,
      1343552., 1350272., 1528856., 1536640., 1544424., 1552208., 1537088.,
      1544928., 1552768., 1560608., 1545320., 1553216., 1561112., 1569008.,
      1553552., 1561504., 1569456., 1577408., 1749312., 1758336., 1767360.,
      1776384., 1758592., 1767680., 1776768., 1785856., 1767872., 1777024.,
      1786176., 1795328., 1777152., 1786368., 1795584., 1804800., 1969896.,
      1980192., 1990488., 2000784., 1980192., 1990560., 2000928., 2011296.,
      1990488., 2000928., 2011368., 2021808., 2000784., 2011296., 2021808.,
      2032320., 1749312., 1758592., 1767872., 1777152., 1758336., 1767680.,
      1777024., 1786368., 1767360., 1776768., 1786176., 1795584., 1776384.,
      1785856., 1795328., 1804800., 1528856., 1537088., 1545320., 1553552.,
      1536640., 1544928., 1553216., 1561504., 1544424., 1552768., 1561112.,
      1569456., 1552208., 1560608., 1569008., 1577408., 1308656., 1315808.,
      1322960., 1330112., 1315232., 1322432., 1329632., 1336832., 1321808.,
      1329056., 1336304., 1343552., 1328384., 1335680., 1342976., 1350272.,
      1072498., 1079008., 1085518., 1092028., 1078000., 1084552., 1091104.,
      1097656., 1083502., 1090096., 1096690., 1103284., 1089004., 1095640.,
      1102276., 1108912., 1249549., 1257242., 1264935., 1272628., 1255870.,
      1263612., 1271354., 1279096., 1262191., 1269982., 1277773., 1285564.,
      1268512., 1276352., 1284192., 1292032., 1425816., 1434720., 1443624.,
      1452528., 1432928., 1441888., 1450848., 1459808., 1440040., 1449056.,
      1458072., 1467088., 1447152., 1456224., 1465296., 1474368., 1601187.,
      1611330., 1621473., 1631616., 1609062., 1619268., 1629474., 1639680.,
      1616937., 1627206., 1637475., 1647744., 1624812., 1635144., 1645476.,
      1655808., 1417752., 1426880., 1436008., 1445136., 1424640., 1433824.,
      1443008., 1452192., 1431528., 1440768., 1450008., 1459248., 1438416.,
      1447712., 1457008., 1466304., 1235437., 1243522., 1251607., 1259692.,
      1241366., 1249500., 1257634., 1265768., 1247295., 1255478., 1263661.,
      1271844., 1253224., 1261456., 1269688., 1277920., 1054354., 1061368.,
      1068382., 1075396., 1059352., 1066408., 1073464., 1080520., 1064350.,
      1071448., 1078546., 1085644., 1069348., 1076488., 1083628., 1090768.,
      841524.,  847752.,  853980.,  860208.,  845592.,  851856.,  858120.,
      864384.,  849660.,  855960.,  862260.,  868560.,  853728.,  860064.,
      866400.,  872736.,  977298.,  984648.,  991998.,  999348.,  981960.,
      989352.,  996744.,  1004136., 986622.,  994056.,  1001490., 1008924.,
      991284.,  998760.,  1006236., 1013712., 1111536., 1120032., 1128528.,
      1137024., 1116768., 1125312., 1133856., 1142400., 1122000., 1130592.,
      1139184., 1147776., 1127232., 1135872., 1144512., 1153152., 1244142.,
      1253808., 1263474., 1273140., 1249920., 1259640., 1269360., 1279080.,
      1255698., 1265472., 1275246., 1285020., 1261476., 1271304., 1281132.,
      1290960., 1097712., 1106400., 1115088., 1123776., 1102752., 1111488.,
      1120224., 1128960., 1107792., 1116576., 1125360., 1134144., 1112832.,
      1121664., 1130496., 1139328., 953106.,  960792.,  968478.,  976164.,
      957432.,  965160.,  972888.,  980616.,  961758.,  969528.,  977298.,
      985068.,  966084.,  973896.,  981708.,  989520.,  810420.,  817080.,
      823740.,  830400.,  814056.,  820752.,  827448.,  834144.,  817692.,
      824424.,  831156.,  837888.,  821328.,  828096.,  834864.,  841632.,
      623510.,  629240.,  634970.,  640700.,  626360.,  632120.,  637880.,
      643640.,  629210.,  635000.,  640790.,  646580.,  632060.,  637880.,
      643700.,  649520.,  721175.,  727930.,  734685.,  741440.,  724430.,
      731220.,  738010.,  744800.,  727685.,  734510.,  741335.,  748160.,
      730940.,  737800.,  744660.,  751520.,  816840.,  824640.,  832440.,
      840240.,  820480.,  828320.,  836160.,  844000.,  824120.,  832000.,
      839880.,  847760.,  827760.,  835680.,  843600.,  851520.,  910425.,
      919290.,  928155.,  937020.,  914430.,  923340.,  932250.,  941160.,
      918435.,  927390.,  936345.,  945300.,  922440.,  931440.,  940440.,
      949440.,  799560.,  807520.,  815480.,  823440.,  803040.,  811040.,
      819040.,  827040.,  806520.,  814560.,  822600.,  830640.,  810000.,
      818080.,  826160.,  834240.,  690935.,  697970.,  705005.,  712040.,
      693910.,  700980.,  708050.,  715120.,  696885.,  703990.,  711095.,
      718200.,  699860.,  707000.,  714140.,  721280.,  584630.,  590720.,
      596810.,  602900.,  587120.,  593240.,  599360.,  605480.,  589610.,
      595760.,  601910.,  608060.,  592100.,  598280.,  604460.,  610640.};
  const std::array<int, 4> in_shape = {{1, 8, 9, 4}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, VALID1x8x9x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      2230.,  2368.,  2506.,  2644.,  2296.,  2440.,  2584.,  2728.,  2362.,
      2512.,  2662.,  2812.,  2428.,  2584.,  2740.,  2896.,  2494.,  2656.,
      2818.,  2980.,  2560.,  2728.,  2896.,  3064.,  2626.,  2800.,  2974.,
      3148.,  2692.,  2872.,  3052.,  3232.,  2758.,  2944.,  3130.,  3316.,
      2824.,  3016.,  3208.,  3400.,  2890.,  3088.,  3286.,  3484.,  2956.,
      3160.,  3364.,  3568.,  3022.,  3232.,  3442.,  3652.,  3088.,  3304.,
      3520.,  3736.,  3154.,  3376.,  3598.,  3820.,  3220.,  3448.,  3676.,
      3904.,  3286.,  3520.,  3754.,  3988.,  3352.,  3592.,  3832.,  4072.,
      3418.,  3664.,  3910.,  4156.,  3484.,  3736.,  3988.,  4240.,  3550.,
      3808.,  4066.,  4324.,  3616.,  3880.,  4144.,  4408.,  3682.,  3952.,
      4222.,  4492.,  3748.,  4024.,  4300.,  4576.,  3814.,  4096.,  4378.,
      4660.,  3880.,  4168.,  4456.,  4744.,  3946.,  4240.,  4534.,  4828.,
      4012.,  4312.,  4612.,  4912.,  4606.,  4960.,  5314.,  5668.,  4672.,
      5032.,  5392.,  5752.,  4738.,  5104.,  5470.,  5836.,  4804.,  5176.,
      5548.,  5920.,  4870.,  5248.,  5626.,  6004.,  4936.,  5320.,  5704.,
      6088.,  5002.,  5392.,  5782.,  6172.,  5068.,  5464.,  5860.,  6256.,
      5134.,  5536.,  5938.,  6340.,  5200.,  5608.,  6016.,  6424.,  5266.,
      5680.,  6094.,  6508.,  5332.,  5752.,  6172.,  6592.,  5398.,  5824.,
      6250.,  6676.,  5464.,  5896.,  6328.,  6760.,  5530.,  5968.,  6406.,
      6844.,  5596.,  6040.,  6484.,  6928.,  5662.,  6112.,  6562.,  7012.,
      5728.,  6184.,  6640.,  7096.,  5794.,  6256.,  6718.,  7180.,  5860.,
      6328.,  6796.,  7264.,  5926.,  6400.,  6874.,  7348.,  5992.,  6472.,
      6952.,  7432.,  6058.,  6544.,  7030.,  7516.,  6124.,  6616.,  7108.,
      7600.,  6190.,  6688.,  7186.,  7684.,  6256.,  6760.,  7264.,  7768.,
      6322.,  6832.,  7342.,  7852.,  6388.,  6904.,  7420.,  7936.,  6982.,
      7552.,  8122.,  8692.,  7048.,  7624.,  8200.,  8776.,  7114.,  7696.,
      8278.,  8860.,  7180.,  7768.,  8356.,  8944.,  7246.,  7840.,  8434.,
      9028.,  7312.,  7912.,  8512.,  9112.,  7378.,  7984.,  8590.,  9196.,
      7444.,  8056.,  8668.,  9280.,  7510.,  8128.,  8746.,  9364.,  7576.,
      8200.,  8824.,  9448.,  7642.,  8272.,  8902.,  9532.,  7708.,  8344.,
      8980.,  9616.,  7774.,  8416.,  9058.,  9700.,  7840.,  8488.,  9136.,
      9784.,  7906.,  8560.,  9214.,  9868.,  7972.,  8632.,  9292.,  9952.,
      8038.,  8704.,  9370.,  10036., 8104.,  8776.,  9448.,  10120., 8170.,
      8848.,  9526.,  10204., 8236.,  8920.,  9604.,  10288., 8302.,  8992.,
      9682.,  10372., 8368.,  9064.,  9760.,  10456., 8434.,  9136.,  9838.,
      10540., 8500.,  9208.,  9916.,  10624., 8566.,  9280.,  9994.,  10708.,
      8632.,  9352.,  10072., 10792., 8698.,  9424.,  10150., 10876., 8764.,
      9496.,  10228., 10960., 9358.,  10144., 10930., 11716., 9424.,  10216.,
      11008., 11800., 9490.,  10288., 11086., 11884., 9556.,  10360., 11164.,
      11968., 9622.,  10432., 11242., 12052., 9688.,  10504., 11320., 12136.,
      9754.,  10576., 11398., 12220., 9820.,  10648., 11476., 12304., 9886.,
      10720., 11554., 12388., 9952.,  10792., 11632., 12472., 10018., 10864.,
      11710., 12556., 10084., 10936., 11788., 12640., 10150., 11008., 11866.,
      12724., 10216., 11080., 11944., 12808., 10282., 11152., 12022., 12892.,
      10348., 11224., 12100., 12976., 10414., 11296., 12178., 13060., 10480.,
      11368., 12256., 13144., 10546., 11440., 12334., 13228., 10612., 11512.,
      12412., 13312., 10678., 11584., 12490., 13396., 10744., 11656., 12568.,
      13480., 10810., 11728., 12646., 13564., 10876., 11800., 12724., 13648.,
      10942., 11872., 12802., 13732., 11008., 11944., 12880., 13816., 11074.,
      12016., 12958., 13900., 11140., 12088., 13036., 13984., 11734., 12736.,
      13738., 14740., 11800., 12808., 13816., 14824., 11866., 12880., 13894.,
      14908., 11932., 12952., 13972., 14992., 11998., 13024., 14050., 15076.,
      12064., 13096., 14128., 15160., 12130., 13168., 14206., 15244., 12196.,
      13240., 14284., 15328., 12262., 13312., 14362., 15412., 12328., 13384.,
      14440., 15496., 12394., 13456., 14518., 15580., 12460., 13528., 14596.,
      15664., 12526., 13600., 14674., 15748., 12592., 13672., 14752., 15832.,
      12658., 13744., 14830., 15916., 12724., 13816., 14908., 16000., 12790.,
      13888., 14986., 16084., 12856., 13960., 15064., 16168., 12922., 14032.,
      15142., 16252., 12988., 14104., 15220., 16336., 13054., 14176., 15298.,
      16420., 13120., 14248., 15376., 16504., 13186., 14320., 15454., 16588.,
      13252., 14392., 15532., 16672., 13318., 14464., 15610., 16756., 13384.,
      14536., 15688., 16840., 13450., 14608., 15766., 16924., 13516., 14680.,
      15844., 17008., 14110., 15328., 16546., 17764., 14176., 15400., 16624.,
      17848., 14242., 15472., 16702., 17932., 14308., 15544., 16780., 18016.,
      14374., 15616., 16858., 18100., 14440., 15688., 16936., 18184., 14506.,
      15760., 17014., 18268., 14572., 15832., 17092., 18352., 14638., 15904.,
      17170., 18436., 14704., 15976., 17248., 18520., 14770., 16048., 17326.,
      18604., 14836., 16120., 17404., 18688., 14902., 16192., 17482., 18772.,
      14968., 16264., 17560., 18856., 15034., 16336., 17638., 18940., 15100.,
      16408., 17716., 19024., 15166., 16480., 17794., 19108., 15232., 16552.,
      17872., 19192., 15298., 16624., 17950., 19276., 15364., 16696., 18028.,
      19360., 15430., 16768., 18106., 19444., 15496., 16840., 18184., 19528.,
      15562., 16912., 18262., 19612., 15628., 16984., 18340., 19696., 15694.,
      17056., 18418., 19780., 15760., 17128., 18496., 19864., 15826., 17200.,
      18574., 19948., 15892., 17272., 18652., 20032., 16486., 17920., 19354.,
      20788., 16552., 17992., 19432., 20872., 16618., 18064., 19510., 20956.,
      16684., 18136., 19588., 21040., 16750., 18208., 19666., 21124., 16816.,
      18280., 19744., 21208., 16882., 18352., 19822., 21292., 16948., 18424.,
      19900., 21376., 17014., 18496., 19978., 21460., 17080., 18568., 20056.,
      21544., 17146., 18640., 20134., 21628., 17212., 18712., 20212., 21712.,
      17278., 18784., 20290., 21796., 17344., 18856., 20368., 21880., 17410.,
      18928., 20446., 21964., 17476., 19000., 20524., 22048., 17542., 19072.,
      20602., 22132., 17608., 19144., 20680., 22216., 17674., 19216., 20758.,
      22300., 17740., 19288., 20836., 22384., 17806., 19360., 20914., 22468.,
      17872., 19432., 20992., 22552., 17938., 19504., 21070., 22636., 18004.,
      19576., 21148., 22720., 18070., 19648., 21226., 22804., 18136., 19720.,
      21304., 22888., 18202., 19792., 21382., 22972., 18268., 19864., 21460.,
      23056.};
  const std::array<int, 4> in_shape = {{1, 8, 9, 4}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, SAME1x8x10x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      55020.,  63580.,  72300.,  81175.,  73650.,  65980.,  58170.,
      75754.,  87176.,  98730.,  110410., 99810.,  89096.,  78274.,
      98098.,  112532., 127050., 141645., 127680., 113652., 99568.,
      121352., 138848., 156360., 173880., 156360., 138848., 121352.,
      99568.,  113652., 127680., 141645., 127050., 112532., 98098.,
      78274.,  89096.,  99810.,  110410., 98730.,  87176.,  75754.,
      58170.,  65980.,  73650.,  81175.,  72300.,  63580.,  55020.};
  const std::array<int, 4> in_shape = {{1, 8, 10, 1}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, VALID1x8x10x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      360.,  396.,  432.,  468.,  504.,  540.,  576.,  720.,  756.,  792.,
      828.,  864.,  900.,  936.,  1080., 1116., 1152., 1188., 1224., 1260.,
      1296., 1440., 1476., 1512., 1548., 1584., 1620., 1656., 1800., 1836.,
      1872., 1908., 1944., 1980., 2016., 2160., 2196., 2232., 2268., 2304.,
      2340., 2376., 2520., 2556., 2592., 2628., 2664., 2700., 2736.};
  const std::array<int, 4> in_shape = {{1, 8, 10, 1}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, SAME1x8x10x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      109200., 110040., 126180., 127160., 143475., 144600., 161075., 162350.,
      146130., 147300., 130900., 131960., 115395., 116340., 150290., 151508.,
      172936., 174352., 195840., 197460., 218990., 220820., 197946., 199620.,
      176680., 178192., 155204., 156548., 194530., 196196., 223132., 225064.,
      251895., 254100., 280805., 283290., 253092., 255360., 225260., 227304.,
      197323., 199136., 240520., 242704., 275168., 277696., 309840., 312720.,
      344520., 347760., 309768., 312720., 275040., 277696., 240352., 242704.,
      196980., 199136., 224812., 227304., 252525., 255360., 280105., 283290.,
      251202., 254100., 222460., 225064., 193893., 196196., 154490., 156548.,
      175816., 178192., 196920., 199620., 217790., 220820., 194706., 197460.,
      171880., 174352., 149324., 151508., 114450., 116340., 129780., 131960.,
      144825., 147300., 159575., 162350., 142080., 144600., 124900., 127160.,
      108045., 110040.};
  const std::array<int, 4> in_shape = {{1, 8, 10, 1}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, VALID1x8x10x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      660.,  720.,  724.,  792.,  788.,  864.,  852.,  936.,  916.,  1008.,
      980.,  1080., 1044., 1152., 1300., 1440., 1364., 1512., 1428., 1584.,
      1492., 1656., 1556., 1728., 1620., 1800., 1684., 1872., 1940., 2160.,
      2004., 2232., 2068., 2304., 2132., 2376., 2196., 2448., 2260., 2520.,
      2324., 2592., 2580., 2880., 2644., 2952., 2708., 3024., 2772., 3096.,
      2836., 3168., 2900., 3240., 2964., 3312., 3220., 3600., 3284., 3672.,
      3348., 3744., 3412., 3816., 3476., 3888., 3540., 3960., 3604., 4032.,
      3860., 4320., 3924., 4392., 3988., 4464., 4052., 4536., 4116., 4608.,
      4180., 4680., 4244., 4752., 4500., 5040., 4564., 5112., 4628., 5184.,
      4692., 5256., 4756., 5328., 4820., 5400., 4884., 5472.};
  const std::array<int, 4> in_shape = {{1, 8, 10, 1}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, SAME1x8x10x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      217560., 218400., 219240., 220080., 251380., 252360., 253340., 254320.,
      285825., 286950., 288075., 289200., 320875., 322150., 323425., 324700.,
      291090., 292260., 293430., 294600., 260740., 261800., 262860., 263920.,
      229845., 230790., 231735., 232680., 299362., 300580., 301798., 303016.,
      344456., 345872., 347288., 348704., 390060., 391680., 393300., 394920.,
      436150., 437980., 439810., 441640., 394218., 395892., 397566., 399240.,
      351848., 353360., 354872., 356384., 309064., 310408., 311752., 313096.,
      387394., 389060., 390726., 392392., 444332., 446264., 448196., 450128.,
      501585., 503790., 505995., 508200., 559125., 561610., 564095., 566580.,
      503916., 506184., 508452., 510720., 448476., 450520., 452564., 454608.,
      392833., 394646., 396459., 398272., 478856., 481040., 483224., 485408.,
      547808., 550336., 552864., 555392., 616800., 619680., 622560., 625440.,
      685800., 689040., 692280., 695520., 616584., 619536., 622488., 625440.,
      547424., 550080., 552736., 555392., 478352., 480704., 483056., 485408.,
      391804., 393960., 396116., 398272., 447132., 449624., 452116., 454608.,
      502215., 505050., 507885., 510720., 557025., 560210., 563395., 566580.,
      499506., 502404., 505302., 508200., 442316., 444920., 447524., 450128.,
      385483., 387786., 390089., 392392., 306922., 308980., 311038., 313096.,
      349256., 351632., 354008., 356384., 391140., 393840., 396540., 399240.,
      432550., 435580., 438610., 441640., 386658., 389412., 392166., 394920.,
      341288., 343760., 346232., 348704., 296464., 298648., 300832., 303016.,
      227010., 228900., 230790., 232680., 257380., 259560., 261740., 263920.,
      287175., 289650., 292125., 294600., 316375., 319150., 321925., 324700.,
      281640., 284160., 286680., 289200., 247540., 249800., 252060., 254320.,
      214095., 216090., 218085., 220080.};
  const std::array<int, 4> in_shape = {{1, 8, 10, 1}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, VALID1x8x10x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1260.,  1320.,  1380.,  1440.,  1380.,  1448.,  1516.,  1584.,  1500.,
      1576.,  1652.,  1728.,  1620.,  1704.,  1788.,  1872.,  1740.,  1832.,
      1924.,  2016.,  1860.,  1960.,  2060.,  2160.,  1980.,  2088.,  2196.,
      2304.,  2460.,  2600.,  2740.,  2880.,  2580.,  2728.,  2876.,  3024.,
      2700.,  2856.,  3012.,  3168.,  2820.,  2984.,  3148.,  3312.,  2940.,
      3112.,  3284.,  3456.,  3060.,  3240.,  3420.,  3600.,  3180.,  3368.,
      3556.,  3744.,  3660.,  3880.,  4100.,  4320.,  3780.,  4008.,  4236.,
      4464.,  3900.,  4136.,  4372.,  4608.,  4020.,  4264.,  4508.,  4752.,
      4140.,  4392.,  4644.,  4896.,  4260.,  4520.,  4780.,  5040.,  4380.,
      4648.,  4916.,  5184.,  4860.,  5160.,  5460.,  5760.,  4980.,  5288.,
      5596.,  5904.,  5100.,  5416.,  5732.,  6048.,  5220.,  5544.,  5868.,
      6192.,  5340.,  5672.,  6004.,  6336.,  5460.,  5800.,  6140.,  6480.,
      5580.,  5928.,  6276.,  6624.,  6060.,  6440.,  6820.,  7200.,  6180.,
      6568.,  6956.,  7344.,  6300.,  6696.,  7092.,  7488.,  6420.,  6824.,
      7228.,  7632.,  6540.,  6952.,  7364.,  7776.,  6660.,  7080.,  7500.,
      7920.,  6780.,  7208.,  7636.,  8064.,  7260.,  7720.,  8180.,  8640.,
      7380.,  7848.,  8316.,  8784.,  7500.,  7976.,  8452.,  8928.,  7620.,
      8104.,  8588.,  9072.,  7740.,  8232.,  8724.,  9216.,  7860.,  8360.,
      8860.,  9360.,  7980.,  8488.,  8996.,  9504.,  8460.,  9000.,  9540.,
      10080., 8580.,  9128.,  9676.,  10224., 8700.,  9256.,  9812.,  10368.,
      8820.,  9384.,  9948.,  10512., 8940.,  9512.,  10084., 10656., 9060.,
      9640.,  10220., 10800., 9180.,  9768.,  10356., 10944.};
  const std::array<int, 4> in_shape = {{1, 8, 10, 1}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, SAME1x8x10x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      108045., 110040., 124900., 127160., 142080., 144600., 159575., 162350.,
      144825., 147300., 129780., 131960., 114450., 116340., 149324., 151508.,
      171880., 174352., 194706., 197460., 217790., 220820., 196920., 199620.,
      175816., 178192., 154490., 156548., 193893., 196196., 222460., 225064.,
      251202., 254100., 280105., 283290., 252525., 255360., 224812., 227304.,
      196980., 199136., 240352., 242704., 275040., 277696., 309768., 312720.,
      344520., 347760., 309840., 312720., 275168., 277696., 240520., 242704.,
      197323., 199136., 225260., 227304., 253092., 255360., 280805., 283290.,
      251895., 254100., 223132., 225064., 194530., 196196., 155204., 156548.,
      176680., 178192., 197946., 199620., 218990., 220820., 195840., 197460.,
      172936., 174352., 150290., 151508., 115395., 116340., 130900., 131960.,
      146130., 147300., 161075., 162350., 143475., 144600., 126180., 127160.,
      109200., 110040.};
  const std::array<int, 4> in_shape = {{1, 8, 10, 2}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, VALID1x8x10x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      684.,  720.,  756.,  792.,  828.,  864.,  900.,  936.,  972.,  1008.,
      1044., 1080., 1116., 1152., 1404., 1440., 1476., 1512., 1548., 1584.,
      1620., 1656., 1692., 1728., 1764., 1800., 1836., 1872., 2124., 2160.,
      2196., 2232., 2268., 2304., 2340., 2376., 2412., 2448., 2484., 2520.,
      2556., 2592., 2844., 2880., 2916., 2952., 2988., 3024., 3060., 3096.,
      3132., 3168., 3204., 3240., 3276., 3312., 3564., 3600., 3636., 3672.,
      3708., 3744., 3780., 3816., 3852., 3888., 3924., 3960., 3996., 4032.,
      4284., 4320., 4356., 4392., 4428., 4464., 4500., 4536., 4572., 4608.,
      4644., 4680., 4716., 4752., 5004., 5040., 5076., 5112., 5148., 5184.,
      5220., 5256., 5292., 5328., 5364., 5400., 5436., 5472.};
  const std::array<int, 4> in_shape = {{1, 8, 10, 2}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, SAME1x8x10x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      214445., 216090., 218400., 220080., 247880., 249800., 252360., 254320.,
      281955., 284160., 286950., 289200., 316650., 319150., 322150., 324700.,
      287355., 289650., 292260., 294600., 257480., 259560., 261800., 263920.,
      227045., 228900., 230790., 232680., 296254., 298648., 300580., 303016.,
      340976., 343760., 345872., 348704., 386226., 389412., 391680., 394920.,
      431980., 435580., 437980., 441640., 390546., 393840., 395892., 399240.,
      348656., 351632., 353360., 356384., 306334., 308980., 310408., 313096.,
      384503., 387786., 389060., 392392., 441112., 444920., 446264., 450128.,
      498057., 502404., 503790., 508200., 555310., 560210., 561610., 566580.,
      500577., 505050., 506184., 510720., 445592., 449624., 450520., 454608.,
      390383., 393960., 394646., 398272., 476392., 480704., 481040., 485408.,
      545088., 550080., 550336., 555392., 613848., 619536., 619680., 625440.,
      682640., 689040., 689040., 695520., 613848., 619680., 619536., 625440.,
      545088., 550336., 550080., 555392., 476392., 481040., 480704., 485408.,
      390383., 394646., 393960., 398272., 445592., 450520., 449624., 454608.,
      500577., 506184., 505050., 510720., 555310., 561610., 560210., 566580.,
      498057., 503790., 502404., 508200., 441112., 446264., 444920., 450128.,
      384503., 389060., 387786., 392392., 306334., 310408., 308980., 313096.,
      348656., 353360., 351632., 356384., 390546., 395892., 393840., 399240.,
      431980., 437980., 435580., 441640., 386226., 391680., 389412., 394920.,
      340976., 345872., 343760., 348704., 296254., 300580., 298648., 303016.,
      227045., 230790., 228900., 232680., 257480., 261800., 259560., 263920.,
      287355., 292260., 289650., 294600., 316650., 322150., 319150., 324700.,
      281955., 286950., 284160., 289200., 247880., 252360., 249800., 254320.,
      214445., 218400., 216090., 220080.};
  const std::array<int, 4> in_shape = {{1, 8, 10, 2}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, VALID1x8x10x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1256., 1368.,  1320., 1440.,  1384., 1512.,  1448., 1584.,  1512., 1656.,
      1576., 1728.,  1640., 1800.,  1704., 1872.,  1768., 1944.,  1832., 2016.,
      1896., 2088.,  1960., 2160.,  2024., 2232.,  2088., 2304.,  2536., 2808.,
      2600., 2880.,  2664., 2952.,  2728., 3024.,  2792., 3096.,  2856., 3168.,
      2920., 3240.,  2984., 3312.,  3048., 3384.,  3112., 3456.,  3176., 3528.,
      3240., 3600.,  3304., 3672.,  3368., 3744.,  3816., 4248.,  3880., 4320.,
      3944., 4392.,  4008., 4464.,  4072., 4536.,  4136., 4608.,  4200., 4680.,
      4264., 4752.,  4328., 4824.,  4392., 4896.,  4456., 4968.,  4520., 5040.,
      4584., 5112.,  4648., 5184.,  5096., 5688.,  5160., 5760.,  5224., 5832.,
      5288., 5904.,  5352., 5976.,  5416., 6048.,  5480., 6120.,  5544., 6192.,
      5608., 6264.,  5672., 6336.,  5736., 6408.,  5800., 6480.,  5864., 6552.,
      5928., 6624.,  6376., 7128.,  6440., 7200.,  6504., 7272.,  6568., 7344.,
      6632., 7416.,  6696., 7488.,  6760., 7560.,  6824., 7632.,  6888., 7704.,
      6952., 7776.,  7016., 7848.,  7080., 7920.,  7144., 7992.,  7208., 8064.,
      7656., 8568.,  7720., 8640.,  7784., 8712.,  7848., 8784.,  7912., 8856.,
      7976., 8928.,  8040., 9000.,  8104., 9072.,  8168., 9144.,  8232., 9216.,
      8296., 9288.,  8360., 9360.,  8424., 9432.,  8488., 9504.,  8936., 10008.,
      9000., 10080., 9064., 10152., 9128., 10224., 9192., 10296., 9256., 10368.,
      9320., 10440., 9384., 10512., 9448., 10584., 9512., 10656., 9576., 10728.,
      9640., 10800., 9704., 10872., 9768., 10944.};
  const std::array<int, 4> in_shape = {{1, 8, 10, 2}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, SAME1x8x10x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      427245.,  428890.,  430535.,  432180.,  435120.,  436800.,  438480.,
      440160.,  493840.,  495760.,  497680.,  499600.,  502760.,  504720.,
      506680.,  508640.,  561705.,  563910.,  566115.,  568320.,  571650.,
      573900.,  576150.,  578400.,  630800.,  633300.,  635800.,  638300.,
      641750.,  644300.,  646850.,  649400.,  572415.,  574710.,  577005.,
      579300.,  582180.,  584520.,  586860.,  589200.,  512880.,  514960.,
      517040.,  519120.,  521480.,  523600.,  525720.,  527840.,  452235.,
      454090.,  455945.,  457800.,  459690.,  461580.,  463470.,  465360.,
      590114.,  592508.,  594902.,  597296.,  598724.,  601160.,  603596.,
      606032.,  679168.,  681952.,  684736.,  687520.,  688912.,  691744.,
      694576.,  697408.,  769266.,  772452.,  775638.,  778824.,  780120.,
      783360.,  786600.,  789840.,  860360.,  863960.,  867560.,  871160.,
      872300.,  875960.,  879620.,  883280.,  777798.,  781092.,  784386.,
      787680.,  788436.,  791784.,  795132.,  798480.,  694336.,  697312.,
      700288.,  703264.,  703696.,  706720.,  709744.,  712768.,  610022.,
      612668.,  615314.,  617960.,  618128.,  620816.,  623504.,  626192.,
      765723.,  769006.,  772289.,  775572.,  774788.,  778120.,  781452.,
      784784.,  878416.,  882224.,  886032.,  889840.,  888664.,  892528.,
      896392.,  900256.,  991767.,  996114.,  1000461., 1004808., 1003170.,
      1007580., 1011990., 1016400., 1105720., 1110620., 1115520., 1120420.,
      1118250., 1123220., 1128190., 1133160., 996681.,  1001154., 1005627.,
      1010100., 1007832., 1012368., 1016904., 1021440., 887152.,  891184.,
      895216.,  899248.,  896952.,  901040.,  905128.,  909216.,  777189.,
      780766.,  784343.,  787920.,  785666.,  789292.,  792918.,  796544.,
      948472.,  952784.,  957096.,  961408.,  957712.,  962080.,  966448.,
      970816.,  1085184., 1090176., 1095168., 1100160., 1095616., 1100672.,
      1105728., 1110784., 1222008., 1227696., 1233384., 1239072., 1233600.,
      1239360., 1245120., 1250880., 1358880., 1365280., 1371680., 1378080.,
      1371600., 1378080., 1384560., 1391040., 1221864., 1227696., 1233528.,
      1239360., 1233168., 1239072., 1244976., 1250880., 1084928., 1090176.,
      1095424., 1100672., 1094848., 1100160., 1105472., 1110784., 948136.,
      952784.,  957432.,  962080.,  956704.,  961408.,  966112.,  970816.,
      776503.,  780766.,  785029.,  789292.,  783608.,  787920.,  792232.,
      796544.,  886256.,  891184.,  896112.,  901040.,  894264.,  899248.,
      904232.,  909216.,  995547.,  1001154., 1006761., 1012368., 1004430.,
      1010100., 1015770., 1021440., 1104320., 1110620., 1116920., 1123220.,
      1114050., 1120420., 1126790., 1133160., 990381.,  996114.,  1001847.,
      1007580., 999012.,  1004808., 1010604., 1016400., 877072.,  882224.,
      887376.,  892528.,  884632.,  889840.,  895048.,  900256.,  764449.,
      769006.,  773563.,  778120.,  770966.,  775572.,  780178.,  784784.,
      608594.,  612668.,  616742.,  620816.,  613844.,  617960.,  622076.,
      626192.,  692608.,  697312.,  702016.,  706720.,  698512.,  703264.,
      708016.,  712768.,  775746.,  781092.,  786438.,  791784.,  782280.,
      787680.,  793080.,  798480.,  857960.,  863960.,  869960.,  875960.,
      865100.,  871160.,  877220.,  883280.,  766998.,  772452.,  777906.,
      783360.,  773316.,  778824.,  784332.,  789840.,  677056.,  681952.,
      686848.,  691744.,  682576.,  687520.,  692464.,  697408.,  588182.,
      592508.,  596834.,  601160.,  592928.,  597296.,  601664.,  606032.,
      450345.,  454090.,  457835.,  461580.,  454020.,  457800.,  461580.,
      465360.,  510640.,  514960.,  519280.,  523600.,  514760.,  519120.,
      523480.,  527840.,  569805.,  574710.,  579615.,  584520.,  574350.,
      579300.,  584250.,  589200.,  627800.,  633300.,  638800.,  644300.,
      632750.,  638300.,  643850.,  649400.,  558915.,  563910.,  568905.,
      573900.,  563280.,  568320.,  573360.,  578400.,  491280.,  495760.,
      500240.,  504720.,  495080.,  499600.,  504120.,  508640.,  424935.,
      428890.,  432845.,  436800.,  428190.,  432180.,  436170.,  440160.};
  const std::array<int, 4> in_shape = {{1, 8, 10, 2}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, VALID1x8x10x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      2400.,  2512.,  2624.,  2736.,  2520.,  2640.,  2760.,  2880.,  2640.,
      2768.,  2896.,  3024.,  2760.,  2896.,  3032.,  3168.,  2880.,  3024.,
      3168.,  3312.,  3000.,  3152.,  3304.,  3456.,  3120.,  3280.,  3440.,
      3600.,  3240.,  3408.,  3576.,  3744.,  3360.,  3536.,  3712.,  3888.,
      3480.,  3664.,  3848.,  4032.,  3600.,  3792.,  3984.,  4176.,  3720.,
      3920.,  4120.,  4320.,  3840.,  4048.,  4256.,  4464.,  3960.,  4176.,
      4392.,  4608.,  4800.,  5072.,  5344.,  5616.,  4920.,  5200.,  5480.,
      5760.,  5040.,  5328.,  5616.,  5904.,  5160.,  5456.,  5752.,  6048.,
      5280.,  5584.,  5888.,  6192.,  5400.,  5712.,  6024.,  6336.,  5520.,
      5840.,  6160.,  6480.,  5640.,  5968.,  6296.,  6624.,  5760.,  6096.,
      6432.,  6768.,  5880.,  6224.,  6568.,  6912.,  6000.,  6352.,  6704.,
      7056.,  6120.,  6480.,  6840.,  7200.,  6240.,  6608.,  6976.,  7344.,
      6360.,  6736.,  7112.,  7488.,  7200.,  7632.,  8064.,  8496.,  7320.,
      7760.,  8200.,  8640.,  7440.,  7888.,  8336.,  8784.,  7560.,  8016.,
      8472.,  8928.,  7680.,  8144.,  8608.,  9072.,  7800.,  8272.,  8744.,
      9216.,  7920.,  8400.,  8880.,  9360.,  8040.,  8528.,  9016.,  9504.,
      8160.,  8656.,  9152.,  9648.,  8280.,  8784.,  9288.,  9792.,  8400.,
      8912.,  9424.,  9936.,  8520.,  9040.,  9560.,  10080., 8640.,  9168.,
      9696.,  10224., 8760.,  9296.,  9832.,  10368., 9600.,  10192., 10784.,
      11376., 9720.,  10320., 10920., 11520., 9840.,  10448., 11056., 11664.,
      9960.,  10576., 11192., 11808., 10080., 10704., 11328., 11952., 10200.,
      10832., 11464., 12096., 10320., 10960., 11600., 12240., 10440., 11088.,
      11736., 12384., 10560., 11216., 11872., 12528., 10680., 11344., 12008.,
      12672., 10800., 11472., 12144., 12816., 10920., 11600., 12280., 12960.,
      11040., 11728., 12416., 13104., 11160., 11856., 12552., 13248., 12000.,
      12752., 13504., 14256., 12120., 12880., 13640., 14400., 12240., 13008.,
      13776., 14544., 12360., 13136., 13912., 14688., 12480., 13264., 14048.,
      14832., 12600., 13392., 14184., 14976., 12720., 13520., 14320., 15120.,
      12840., 13648., 14456., 15264., 12960., 13776., 14592., 15408., 13080.,
      13904., 14728., 15552., 13200., 14032., 14864., 15696., 13320., 14160.,
      15000., 15840., 13440., 14288., 15136., 15984., 13560., 14416., 15272.,
      16128., 14400., 15312., 16224., 17136., 14520., 15440., 16360., 17280.,
      14640., 15568., 16496., 17424., 14760., 15696., 16632., 17568., 14880.,
      15824., 16768., 17712., 15000., 15952., 16904., 17856., 15120., 16080.,
      17040., 18000., 15240., 16208., 17176., 18144., 15360., 16336., 17312.,
      18288., 15480., 16464., 17448., 18432., 15600., 16592., 17584., 18576.,
      15720., 16720., 17720., 18720., 15840., 16848., 17856., 18864., 15960.,
      16976., 17992., 19008., 16800., 17872., 18944., 20016., 16920., 18000.,
      19080., 20160., 17040., 18128., 19216., 20304., 17160., 18256., 19352.,
      20448., 17280., 18384., 19488., 20592., 17400., 18512., 19624., 20736.,
      17520., 18640., 19760., 20880., 17640., 18768., 19896., 21024., 17760.,
      18896., 20032., 21168., 17880., 19024., 20168., 21312., 18000., 19152.,
      20304., 21456., 18120., 19280., 20440., 21600., 18240., 19408., 20576.,
      21744., 18360., 19536., 20712., 21888.};
  const std::array<int, 4> in_shape = {{1, 8, 10, 2}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, SAME1x8x10x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      214095., 216090., 218085., 220080., 247540., 249800., 252060., 254320.,
      281640., 284160., 286680., 289200., 316375., 319150., 321925., 324700.,
      287175., 289650., 292125., 294600., 257380., 259560., 261740., 263920.,
      227010., 228900., 230790., 232680., 296464., 298648., 300832., 303016.,
      341288., 343760., 346232., 348704., 386658., 389412., 392166., 394920.,
      432550., 435580., 438610., 441640., 391140., 393840., 396540., 399240.,
      349256., 351632., 354008., 356384., 306922., 308980., 311038., 313096.,
      385483., 387786., 390089., 392392., 442316., 444920., 447524., 450128.,
      499506., 502404., 505302., 508200., 557025., 560210., 563395., 566580.,
      502215., 505050., 507885., 510720., 447132., 449624., 452116., 454608.,
      391804., 393960., 396116., 398272., 478352., 480704., 483056., 485408.,
      547424., 550080., 552736., 555392., 616584., 619536., 622488., 625440.,
      685800., 689040., 692280., 695520., 616800., 619680., 622560., 625440.,
      547808., 550336., 552864., 555392., 478856., 481040., 483224., 485408.,
      392833., 394646., 396459., 398272., 448476., 450520., 452564., 454608.,
      503916., 506184., 508452., 510720., 559125., 561610., 564095., 566580.,
      501585., 503790., 505995., 508200., 444332., 446264., 448196., 450128.,
      387394., 389060., 390726., 392392., 309064., 310408., 311752., 313096.,
      351848., 353360., 354872., 356384., 394218., 395892., 397566., 399240.,
      436150., 437980., 439810., 441640., 390060., 391680., 393300., 394920.,
      344456., 345872., 347288., 348704., 299362., 300580., 301798., 303016.,
      229845., 230790., 231735., 232680., 260740., 261800., 262860., 263920.,
      291090., 292260., 293430., 294600., 320875., 322150., 323425., 324700.,
      285825., 286950., 288075., 289200., 251380., 252360., 253340., 254320.,
      217560., 218400., 219240., 220080.};
  const std::array<int, 4> in_shape = {{1, 8, 10, 4}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, VALID1x8x10x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1332.,  1368.,  1404.,  1440.,  1476.,  1512.,  1548.,  1584.,  1620.,
      1656.,  1692.,  1728.,  1764.,  1800.,  1836.,  1872.,  1908.,  1944.,
      1980.,  2016.,  2052.,  2088.,  2124.,  2160.,  2196.,  2232.,  2268.,
      2304.,  2772.,  2808.,  2844.,  2880.,  2916.,  2952.,  2988.,  3024.,
      3060.,  3096.,  3132.,  3168.,  3204.,  3240.,  3276.,  3312.,  3348.,
      3384.,  3420.,  3456.,  3492.,  3528.,  3564.,  3600.,  3636.,  3672.,
      3708.,  3744.,  4212.,  4248.,  4284.,  4320.,  4356.,  4392.,  4428.,
      4464.,  4500.,  4536.,  4572.,  4608.,  4644.,  4680.,  4716.,  4752.,
      4788.,  4824.,  4860.,  4896.,  4932.,  4968.,  5004.,  5040.,  5076.,
      5112.,  5148.,  5184.,  5652.,  5688.,  5724.,  5760.,  5796.,  5832.,
      5868.,  5904.,  5940.,  5976.,  6012.,  6048.,  6084.,  6120.,  6156.,
      6192.,  6228.,  6264.,  6300.,  6336.,  6372.,  6408.,  6444.,  6480.,
      6516.,  6552.,  6588.,  6624.,  7092.,  7128.,  7164.,  7200.,  7236.,
      7272.,  7308.,  7344.,  7380.,  7416.,  7452.,  7488.,  7524.,  7560.,
      7596.,  7632.,  7668.,  7704.,  7740.,  7776.,  7812.,  7848.,  7884.,
      7920.,  7956.,  7992.,  8028.,  8064.,  8532.,  8568.,  8604.,  8640.,
      8676.,  8712.,  8748.,  8784.,  8820.,  8856.,  8892.,  8928.,  8964.,
      9000.,  9036.,  9072.,  9108.,  9144.,  9180.,  9216.,  9252.,  9288.,
      9324.,  9360.,  9396.,  9432.,  9468.,  9504.,  9972.,  10008., 10044.,
      10080., 10116., 10152., 10188., 10224., 10260., 10296., 10332., 10368.,
      10404., 10440., 10476., 10512., 10548., 10584., 10620., 10656., 10692.,
      10728., 10764., 10800., 10836., 10872., 10908., 10944.};
  const std::array<int, 4> in_shape = {{1, 8, 10, 4}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, SAME1x8x10x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      424935.,  428190.,  428890.,  432180.,  432845.,  436170.,  436800.,
      440160.,  491280.,  495080.,  495760.,  499600.,  500240.,  504120.,
      504720.,  508640.,  558915.,  563280.,  563910.,  568320.,  568905.,
      573360.,  573900.,  578400.,  627800.,  632750.,  633300.,  638300.,
      638800.,  643850.,  644300.,  649400.,  569805.,  574350.,  574710.,
      579300.,  579615.,  584250.,  584520.,  589200.,  510640.,  514760.,
      514960.,  519120.,  519280.,  523480.,  523600.,  527840.,  450345.,
      454020.,  454090.,  457800.,  457835.,  461580.,  461580.,  465360.,
      588182.,  592928.,  592508.,  597296.,  596834.,  601664.,  601160.,
      606032.,  677056.,  682576.,  681952.,  687520.,  686848.,  692464.,
      691744.,  697408.,  766998.,  773316.,  772452.,  778824.,  777906.,
      784332.,  783360.,  789840.,  857960.,  865100.,  863960.,  871160.,
      869960.,  877220.,  875960.,  883280.,  775746.,  782280.,  781092.,
      787680.,  786438.,  793080.,  791784.,  798480.,  692608.,  698512.,
      697312.,  703264.,  702016.,  708016.,  706720.,  712768.,  608594.,
      613844.,  612668.,  617960.,  616742.,  622076.,  620816.,  626192.,
      764449.,  770966.,  769006.,  775572.,  773563.,  780178.,  778120.,
      784784.,  877072.,  884632.,  882224.,  889840.,  887376.,  895048.,
      892528.,  900256.,  990381.,  999012.,  996114.,  1004808., 1001847.,
      1010604., 1007580., 1016400., 1104320., 1114050., 1110620., 1120420.,
      1116920., 1126790., 1123220., 1133160., 995547.,  1004430., 1001154.,
      1010100., 1006761., 1015770., 1012368., 1021440., 886256.,  894264.,
      891184.,  899248.,  896112.,  904232.,  901040.,  909216.,  776503.,
      783608.,  780766.,  787920.,  785029.,  792232.,  789292.,  796544.,
      948136.,  956704.,  952784.,  961408.,  957432.,  966112.,  962080.,
      970816.,  1084928., 1094848., 1090176., 1100160., 1095424., 1105472.,
      1100672., 1110784., 1221864., 1233168., 1227696., 1239072., 1233528.,
      1244976., 1239360., 1250880., 1358880., 1371600., 1365280., 1378080.,
      1371680., 1384560., 1378080., 1391040., 1222008., 1233600., 1227696.,
      1239360., 1233384., 1245120., 1239072., 1250880., 1085184., 1095616.,
      1090176., 1100672., 1095168., 1105728., 1100160., 1110784., 948472.,
      957712.,  952784.,  962080.,  957096.,  966448.,  961408.,  970816.,
      777189.,  785666.,  780766.,  789292.,  784343.,  792918.,  787920.,
      796544.,  887152.,  896952.,  891184.,  901040.,  895216.,  905128.,
      899248.,  909216.,  996681.,  1007832., 1001154., 1012368., 1005627.,
      1016904., 1010100., 1021440., 1105720., 1118250., 1110620., 1123220.,
      1115520., 1128190., 1120420., 1133160., 991767.,  1003170., 996114.,
      1007580., 1000461., 1011990., 1004808., 1016400., 878416.,  888664.,
      882224.,  892528.,  886032.,  896392.,  889840.,  900256.,  765723.,
      774788.,  769006.,  778120.,  772289.,  781452.,  775572.,  784784.,
      610022.,  618128.,  612668.,  620816.,  615314.,  623504.,  617960.,
      626192.,  694336.,  703696.,  697312.,  706720.,  700288.,  709744.,
      703264.,  712768.,  777798.,  788436.,  781092.,  791784.,  784386.,
      795132.,  787680.,  798480.,  860360.,  872300.,  863960.,  875960.,
      867560.,  879620.,  871160.,  883280.,  769266.,  780120.,  772452.,
      783360.,  775638.,  786600.,  778824.,  789840.,  679168.,  688912.,
      681952.,  691744.,  684736.,  694576.,  687520.,  697408.,  590114.,
      598724.,  592508.,  601160.,  594902.,  603596.,  597296.,  606032.,
      452235.,  459690.,  454090.,  461580.,  455945.,  463470.,  457800.,
      465360.,  512880.,  521480.,  514960.,  523600.,  517040.,  525720.,
      519120.,  527840.,  572415.,  582180.,  574710.,  584520.,  577005.,
      586860.,  579300.,  589200.,  630800.,  641750.,  633300.,  644300.,
      635800.,  646850.,  638300.,  649400.,  561705.,  571650.,  563910.,
      573900.,  566115.,  576150.,  568320.,  578400.,  493840.,  502760.,
      495760.,  504720.,  497680.,  506680.,  499600.,  508640.,  427245.,
      435120.,  428890.,  436800.,  430535.,  438480.,  432180.,  440160.};
  const std::array<int, 4> in_shape = {{1, 8, 10, 4}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, VALID1x8x10x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      2448.,  2664.,  2512.,  2736.,  2576.,  2808.,  2640.,  2880.,  2704.,
      2952.,  2768.,  3024.,  2832.,  3096.,  2896.,  3168.,  2960.,  3240.,
      3024.,  3312.,  3088.,  3384.,  3152.,  3456.,  3216.,  3528.,  3280.,
      3600.,  3344.,  3672.,  3408.,  3744.,  3472.,  3816.,  3536.,  3888.,
      3600.,  3960.,  3664.,  4032.,  3728.,  4104.,  3792.,  4176.,  3856.,
      4248.,  3920.,  4320.,  3984.,  4392.,  4048.,  4464.,  4112.,  4536.,
      4176.,  4608.,  5008.,  5544.,  5072.,  5616.,  5136.,  5688.,  5200.,
      5760.,  5264.,  5832.,  5328.,  5904.,  5392.,  5976.,  5456.,  6048.,
      5520.,  6120.,  5584.,  6192.,  5648.,  6264.,  5712.,  6336.,  5776.,
      6408.,  5840.,  6480.,  5904.,  6552.,  5968.,  6624.,  6032.,  6696.,
      6096.,  6768.,  6160.,  6840.,  6224.,  6912.,  6288.,  6984.,  6352.,
      7056.,  6416.,  7128.,  6480.,  7200.,  6544.,  7272.,  6608.,  7344.,
      6672.,  7416.,  6736.,  7488.,  7568.,  8424.,  7632.,  8496.,  7696.,
      8568.,  7760.,  8640.,  7824.,  8712.,  7888.,  8784.,  7952.,  8856.,
      8016.,  8928.,  8080.,  9000.,  8144.,  9072.,  8208.,  9144.,  8272.,
      9216.,  8336.,  9288.,  8400.,  9360.,  8464.,  9432.,  8528.,  9504.,
      8592.,  9576.,  8656.,  9648.,  8720.,  9720.,  8784.,  9792.,  8848.,
      9864.,  8912.,  9936.,  8976.,  10008., 9040.,  10080., 9104.,  10152.,
      9168.,  10224., 9232.,  10296., 9296.,  10368., 10128., 11304., 10192.,
      11376., 10256., 11448., 10320., 11520., 10384., 11592., 10448., 11664.,
      10512., 11736., 10576., 11808., 10640., 11880., 10704., 11952., 10768.,
      12024., 10832., 12096., 10896., 12168., 10960., 12240., 11024., 12312.,
      11088., 12384., 11152., 12456., 11216., 12528., 11280., 12600., 11344.,
      12672., 11408., 12744., 11472., 12816., 11536., 12888., 11600., 12960.,
      11664., 13032., 11728., 13104., 11792., 13176., 11856., 13248., 12688.,
      14184., 12752., 14256., 12816., 14328., 12880., 14400., 12944., 14472.,
      13008., 14544., 13072., 14616., 13136., 14688., 13200., 14760., 13264.,
      14832., 13328., 14904., 13392., 14976., 13456., 15048., 13520., 15120.,
      13584., 15192., 13648., 15264., 13712., 15336., 13776., 15408., 13840.,
      15480., 13904., 15552., 13968., 15624., 14032., 15696., 14096., 15768.,
      14160., 15840., 14224., 15912., 14288., 15984., 14352., 16056., 14416.,
      16128., 15248., 17064., 15312., 17136., 15376., 17208., 15440., 17280.,
      15504., 17352., 15568., 17424., 15632., 17496., 15696., 17568., 15760.,
      17640., 15824., 17712., 15888., 17784., 15952., 17856., 16016., 17928.,
      16080., 18000., 16144., 18072., 16208., 18144., 16272., 18216., 16336.,
      18288., 16400., 18360., 16464., 18432., 16528., 18504., 16592., 18576.,
      16656., 18648., 16720., 18720., 16784., 18792., 16848., 18864., 16912.,
      18936., 16976., 19008., 17808., 19944., 17872., 20016., 17936., 20088.,
      18000., 20160., 18064., 20232., 18128., 20304., 18192., 20376., 18256.,
      20448., 18320., 20520., 18384., 20592., 18448., 20664., 18512., 20736.,
      18576., 20808., 18640., 20880., 18704., 20952., 18768., 21024., 18832.,
      21096., 18896., 21168., 18960., 21240., 19024., 21312., 19088., 21384.,
      19152., 21456., 19216., 21528., 19280., 21600., 19344., 21672., 19408.,
      21744., 19472., 21816., 19536., 21888.};
  const std::array<int, 4> in_shape = {{1, 8, 10, 4}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, SAME1x8x10x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      846615.,  849870.,  853125.,  856380.,  854490.,  857780.,  861070.,
      864360.,  862365.,  865690.,  869015.,  872340.,  870240.,  873600.,
      876960.,  880320.,  978760.,  982560.,  986360.,  990160.,  987680.,
      991520.,  995360.,  999200.,  996600.,  1000480., 1004360., 1008240.,
      1005520., 1009440., 1013360., 1017280., 1113465., 1117830., 1122195.,
      1126560., 1123410., 1127820., 1132230., 1136640., 1133355., 1137810.,
      1142265., 1146720., 1143300., 1147800., 1152300., 1156800., 1250650.,
      1255600., 1260550., 1265500., 1261600., 1266600., 1271600., 1276600.,
      1272550., 1277600., 1282650., 1287700., 1283500., 1288600., 1293700.,
      1298800., 1135065., 1139610., 1144155., 1148700., 1144830., 1149420.,
      1154010., 1158600., 1154595., 1159230., 1163865., 1168500., 1164360.,
      1169040., 1173720., 1178400., 1017160., 1021280., 1025400., 1029520.,
      1025760., 1029920., 1034080., 1038240., 1034360., 1038560., 1042760.,
      1046960., 1042960., 1047200., 1051440., 1055680., 897015.,  900690.,
      904365.,  908040.,  904470.,  908180.,  911890.,  915600.,  911925.,
      915670.,  919415.,  923160.,  919380.,  923160.,  926940.,  930720.,
      1171618., 1176364., 1181110., 1185856., 1180228., 1185016., 1189804.,
      1194592., 1188838., 1193668., 1198498., 1203328., 1197448., 1202320.,
      1207192., 1212064., 1348592., 1354112., 1359632., 1365152., 1358336.,
      1363904., 1369472., 1375040., 1368080., 1373696., 1379312., 1384928.,
      1377824., 1383488., 1389152., 1394816., 1527678., 1533996., 1540314.,
      1546632., 1538532., 1544904., 1551276., 1557648., 1549386., 1555812.,
      1562238., 1568664., 1560240., 1566720., 1573200., 1579680., 1708780.,
      1715920., 1723060., 1730200., 1720720., 1727920., 1735120., 1742320.,
      1732660., 1739920., 1747180., 1754440., 1744600., 1751920., 1759240.,
      1766560., 1544958., 1551492., 1558026., 1564560., 1555596., 1562184.,
      1568772., 1575360., 1566234., 1572876., 1579518., 1586160., 1576872.,
      1583568., 1590264., 1596960., 1379312., 1385216., 1391120., 1397024.,
      1388672., 1394624., 1400576., 1406528., 1398032., 1404032., 1410032.,
      1416032., 1407392., 1413440., 1419488., 1425536., 1211938., 1217188.,
      1222438., 1227688., 1220044., 1225336., 1230628., 1235920., 1228150.,
      1233484., 1238818., 1244152., 1236256., 1241632., 1247008., 1252384.,
      1522381., 1528898., 1535415., 1541932., 1531446., 1538012., 1544578.,
      1551144., 1540511., 1547126., 1553741., 1560356., 1549576., 1556240.,
      1562904., 1569568., 1746584., 1754144., 1761704., 1769264., 1756832.,
      1764448., 1772064., 1779680., 1767080., 1774752., 1782424., 1790096.,
      1777328., 1785056., 1792784., 1800512., 1972131., 1980762., 1989393.,
      1998024., 1983534., 1992228., 2000922., 2009616., 1994937., 2003694.,
      2012451., 2021208., 2006340., 2015160., 2023980., 2032800., 2198910.,
      2208640., 2218370., 2228100., 2211440., 2221240., 2231040., 2240840.,
      2223970., 2233840., 2243710., 2253580., 2236500., 2246440., 2256380.,
      2266320., 1982211., 1991094., 1999977., 2008860., 1993362., 2002308.,
      2011254., 2020200., 2004513., 2013522., 2022531., 2031540., 2015664.,
      2024736., 2033808., 2042880., 1764504., 1772512., 1780520., 1788528.,
      1774304., 1782368., 1790432., 1798496., 1784104., 1792224., 1800344.,
      1808464., 1793904., 1802080., 1810256., 1818432., 1545901., 1553006.,
      1560111., 1567216., 1554378., 1561532., 1568686., 1575840., 1562855.,
      1570058., 1577261., 1584464., 1571332., 1578584., 1585836., 1593088.,
      1887704., 1896272., 1904840., 1913408., 1896944., 1905568., 1914192.,
      1922816., 1906184., 1914864., 1923544., 1932224., 1915424., 1924160.,
      1932896., 1941632., 2159936., 2169856., 2179776., 2189696., 2170368.,
      2180352., 2190336., 2200320., 2180800., 2190848., 2200896., 2210944.,
      2191232., 2201344., 2211456., 2221568., 2432424., 2443728., 2455032.,
      2466336., 2444016., 2455392., 2466768., 2478144., 2455608., 2467056.,
      2478504., 2489952., 2467200., 2478720., 2490240., 2501760., 2705040.,
      2717760., 2730480., 2743200., 2717760., 2730560., 2743360., 2756160.,
      2730480., 2743360., 2756240., 2769120., 2743200., 2756160., 2769120.,
      2782080., 2432424., 2444016., 2455608., 2467200., 2443728., 2455392.,
      2467056., 2478720., 2455032., 2466768., 2478504., 2490240., 2466336.,
      2478144., 2489952., 2501760., 2159936., 2170368., 2180800., 2191232.,
      2169856., 2180352., 2190848., 2201344., 2179776., 2190336., 2200896.,
      2211456., 2189696., 2200320., 2210944., 2221568., 1887704., 1896944.,
      1906184., 1915424., 1896272., 1905568., 1914864., 1924160., 1904840.,
      1914192., 1923544., 1932896., 1913408., 1922816., 1932224., 1941632.,
      1545901., 1554378., 1562855., 1571332., 1553006., 1561532., 1570058.,
      1578584., 1560111., 1568686., 1577261., 1585836., 1567216., 1575840.,
      1584464., 1593088., 1764504., 1774304., 1784104., 1793904., 1772512.,
      1782368., 1792224., 1802080., 1780520., 1790432., 1800344., 1810256.,
      1788528., 1798496., 1808464., 1818432., 1982211., 1993362., 2004513.,
      2015664., 1991094., 2002308., 2013522., 2024736., 1999977., 2011254.,
      2022531., 2033808., 2008860., 2020200., 2031540., 2042880., 2198910.,
      2211440., 2223970., 2236500., 2208640., 2221240., 2233840., 2246440.,
      2218370., 2231040., 2243710., 2256380., 2228100., 2240840., 2253580.,
      2266320., 1972131., 1983534., 1994937., 2006340., 1980762., 1992228.,
      2003694., 2015160., 1989393., 2000922., 2012451., 2023980., 1998024.,
      2009616., 2021208., 2032800., 1746584., 1756832., 1767080., 1777328.,
      1754144., 1764448., 1774752., 1785056., 1761704., 1772064., 1782424.,
      1792784., 1769264., 1779680., 1790096., 1800512., 1522381., 1531446.,
      1540511., 1549576., 1528898., 1538012., 1547126., 1556240., 1535415.,
      1544578., 1553741., 1562904., 1541932., 1551144., 1560356., 1569568.,
      1211938., 1220044., 1228150., 1236256., 1217188., 1225336., 1233484.,
      1241632., 1222438., 1230628., 1238818., 1247008., 1227688., 1235920.,
      1244152., 1252384., 1379312., 1388672., 1398032., 1407392., 1385216.,
      1394624., 1404032., 1413440., 1391120., 1400576., 1410032., 1419488.,
      1397024., 1406528., 1416032., 1425536., 1544958., 1555596., 1566234.,
      1576872., 1551492., 1562184., 1572876., 1583568., 1558026., 1568772.,
      1579518., 1590264., 1564560., 1575360., 1586160., 1596960., 1708780.,
      1720720., 1732660., 1744600., 1715920., 1727920., 1739920., 1751920.,
      1723060., 1735120., 1747180., 1759240., 1730200., 1742320., 1754440.,
      1766560., 1527678., 1538532., 1549386., 1560240., 1533996., 1544904.,
      1555812., 1566720., 1540314., 1551276., 1562238., 1573200., 1546632.,
      1557648., 1568664., 1579680., 1348592., 1358336., 1368080., 1377824.,
      1354112., 1363904., 1373696., 1383488., 1359632., 1369472., 1379312.,
      1389152., 1365152., 1375040., 1384928., 1394816., 1171618., 1180228.,
      1188838., 1197448., 1176364., 1185016., 1193668., 1202320., 1181110.,
      1189804., 1198498., 1207192., 1185856., 1194592., 1203328., 1212064.,
      897015.,  904470.,  911925.,  919380.,  900690.,  908180.,  915670.,
      923160.,  904365.,  911890.,  919415.,  926940.,  908040.,  915600.,
      923160.,  930720.,  1017160., 1025760., 1034360., 1042960., 1021280.,
      1029920., 1038560., 1047200., 1025400., 1034080., 1042760., 1051440.,
      1029520., 1038240., 1046960., 1055680., 1135065., 1144830., 1154595.,
      1164360., 1139610., 1149420., 1159230., 1169040., 1144155., 1154010.,
      1163865., 1173720., 1148700., 1158600., 1168500., 1178400., 1250650.,
      1261600., 1272550., 1283500., 1255600., 1266600., 1277600., 1288600.,
      1260550., 1271600., 1282650., 1293700., 1265500., 1276600., 1287700.,
      1298800., 1113465., 1123410., 1133355., 1143300., 1117830., 1127820.,
      1137810., 1147800., 1122195., 1132230., 1142265., 1152300., 1126560.,
      1136640., 1146720., 1156800., 978760.,  987680.,  996600.,  1005520.,
      982560.,  991520.,  1000480., 1009440., 986360.,  995360.,  1004360.,
      1013360., 990160.,  999200.,  1008240., 1017280., 846615.,  854490.,
      862365.,  870240.,  849870.,  857780.,  865690.,  873600.,  853125.,
      861070.,  869015.,  876960.,  856380.,  864360.,  872340.,  880320.};
  const std::array<int, 4> in_shape = {{1, 8, 10, 4}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, VALID1x8x10x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      4680.,  4896.,  5112.,  5328.,  4800.,  5024.,  5248.,  5472.,  4920.,
      5152.,  5384.,  5616.,  5040.,  5280.,  5520.,  5760.,  5160.,  5408.,
      5656.,  5904.,  5280.,  5536.,  5792.,  6048.,  5400.,  5664.,  5928.,
      6192.,  5520.,  5792.,  6064.,  6336.,  5640.,  5920.,  6200.,  6480.,
      5760.,  6048.,  6336.,  6624.,  5880.,  6176.,  6472.,  6768.,  6000.,
      6304.,  6608.,  6912.,  6120.,  6432.,  6744.,  7056.,  6240.,  6560.,
      6880.,  7200.,  6360.,  6688.,  7016.,  7344.,  6480.,  6816.,  7152.,
      7488.,  6600.,  6944.,  7288.,  7632.,  6720.,  7072.,  7424.,  7776.,
      6840.,  7200.,  7560.,  7920.,  6960.,  7328.,  7696.,  8064.,  7080.,
      7456.,  7832.,  8208.,  7200.,  7584.,  7968.,  8352.,  7320.,  7712.,
      8104.,  8496.,  7440.,  7840.,  8240.,  8640.,  7560.,  7968.,  8376.,
      8784.,  7680.,  8096.,  8512.,  8928.,  7800.,  8224.,  8648.,  9072.,
      7920.,  8352.,  8784.,  9216.,  9480.,  10016., 10552., 11088., 9600.,
      10144., 10688., 11232., 9720.,  10272., 10824., 11376., 9840.,  10400.,
      10960., 11520., 9960.,  10528., 11096., 11664., 10080., 10656., 11232.,
      11808., 10200., 10784., 11368., 11952., 10320., 10912., 11504., 12096.,
      10440., 11040., 11640., 12240., 10560., 11168., 11776., 12384., 10680.,
      11296., 11912., 12528., 10800., 11424., 12048., 12672., 10920., 11552.,
      12184., 12816., 11040., 11680., 12320., 12960., 11160., 11808., 12456.,
      13104., 11280., 11936., 12592., 13248., 11400., 12064., 12728., 13392.,
      11520., 12192., 12864., 13536., 11640., 12320., 13000., 13680., 11760.,
      12448., 13136., 13824., 11880., 12576., 13272., 13968., 12000., 12704.,
      13408., 14112., 12120., 12832., 13544., 14256., 12240., 12960., 13680.,
      14400., 12360., 13088., 13816., 14544., 12480., 13216., 13952., 14688.,
      12600., 13344., 14088., 14832., 12720., 13472., 14224., 14976., 14280.,
      15136., 15992., 16848., 14400., 15264., 16128., 16992., 14520., 15392.,
      16264., 17136., 14640., 15520., 16400., 17280., 14760., 15648., 16536.,
      17424., 14880., 15776., 16672., 17568., 15000., 15904., 16808., 17712.,
      15120., 16032., 16944., 17856., 15240., 16160., 17080., 18000., 15360.,
      16288., 17216., 18144., 15480., 16416., 17352., 18288., 15600., 16544.,
      17488., 18432., 15720., 16672., 17624., 18576., 15840., 16800., 17760.,
      18720., 15960., 16928., 17896., 18864., 16080., 17056., 18032., 19008.,
      16200., 17184., 18168., 19152., 16320., 17312., 18304., 19296., 16440.,
      17440., 18440., 19440., 16560., 17568., 18576., 19584., 16680., 17696.,
      18712., 19728., 16800., 17824., 18848., 19872., 16920., 17952., 18984.,
      20016., 17040., 18080., 19120., 20160., 17160., 18208., 19256., 20304.,
      17280., 18336., 19392., 20448., 17400., 18464., 19528., 20592., 17520.,
      18592., 19664., 20736., 19080., 20256., 21432., 22608., 19200., 20384.,
      21568., 22752., 19320., 20512., 21704., 22896., 19440., 20640., 21840.,
      23040., 19560., 20768., 21976., 23184., 19680., 20896., 22112., 23328.,
      19800., 21024., 22248., 23472., 19920., 21152., 22384., 23616., 20040.,
      21280., 22520., 23760., 20160., 21408., 22656., 23904., 20280., 21536.,
      22792., 24048., 20400., 21664., 22928., 24192., 20520., 21792., 23064.,
      24336., 20640., 21920., 23200., 24480., 20760., 22048., 23336., 24624.,
      20880., 22176., 23472., 24768., 21000., 22304., 23608., 24912., 21120.,
      22432., 23744., 25056., 21240., 22560., 23880., 25200., 21360., 22688.,
      24016., 25344., 21480., 22816., 24152., 25488., 21600., 22944., 24288.,
      25632., 21720., 23072., 24424., 25776., 21840., 23200., 24560., 25920.,
      21960., 23328., 24696., 26064., 22080., 23456., 24832., 26208., 22200.,
      23584., 24968., 26352., 22320., 23712., 25104., 26496., 23880., 25376.,
      26872., 28368., 24000., 25504., 27008., 28512., 24120., 25632., 27144.,
      28656., 24240., 25760., 27280., 28800., 24360., 25888., 27416., 28944.,
      24480., 26016., 27552., 29088., 24600., 26144., 27688., 29232., 24720.,
      26272., 27824., 29376., 24840., 26400., 27960., 29520., 24960., 26528.,
      28096., 29664., 25080., 26656., 28232., 29808., 25200., 26784., 28368.,
      29952., 25320., 26912., 28504., 30096., 25440., 27040., 28640., 30240.,
      25560., 27168., 28776., 30384., 25680., 27296., 28912., 30528., 25800.,
      27424., 29048., 30672., 25920., 27552., 29184., 30816., 26040., 27680.,
      29320., 30960., 26160., 27808., 29456., 31104., 26280., 27936., 29592.,
      31248., 26400., 28064., 29728., 31392., 26520., 28192., 29864., 31536.,
      26640., 28320., 30000., 31680., 26760., 28448., 30136., 31824., 26880.,
      28576., 30272., 31968., 27000., 28704., 30408., 32112., 27120., 28832.,
      30544., 32256., 28680., 30496., 32312., 34128., 28800., 30624., 32448.,
      34272., 28920., 30752., 32584., 34416., 29040., 30880., 32720., 34560.,
      29160., 31008., 32856., 34704., 29280., 31136., 32992., 34848., 29400.,
      31264., 33128., 34992., 29520., 31392., 33264., 35136., 29640., 31520.,
      33400., 35280., 29760., 31648., 33536., 35424., 29880., 31776., 33672.,
      35568., 30000., 31904., 33808., 35712., 30120., 32032., 33944., 35856.,
      30240., 32160., 34080., 36000., 30360., 32288., 34216., 36144., 30480.,
      32416., 34352., 36288., 30600., 32544., 34488., 36432., 30720., 32672.,
      34624., 36576., 30840., 32800., 34760., 36720., 30960., 32928., 34896.,
      36864., 31080., 33056., 35032., 37008., 31200., 33184., 35168., 37152.,
      31320., 33312., 35304., 37296., 31440., 33440., 35440., 37440., 31560.,
      33568., 35576., 37584., 31680., 33696., 35712., 37728., 31800., 33824.,
      35848., 37872., 31920., 33952., 35984., 38016., 33480., 35616., 37752.,
      39888., 33600., 35744., 37888., 40032., 33720., 35872., 38024., 40176.,
      33840., 36000., 38160., 40320., 33960., 36128., 38296., 40464., 34080.,
      36256., 38432., 40608., 34200., 36384., 38568., 40752., 34320., 36512.,
      38704., 40896., 34440., 36640., 38840., 41040., 34560., 36768., 38976.,
      41184., 34680., 36896., 39112., 41328., 34800., 37024., 39248., 41472.,
      34920., 37152., 39384., 41616., 35040., 37280., 39520., 41760., 35160.,
      37408., 39656., 41904., 35280., 37536., 39792., 42048., 35400., 37664.,
      39928., 42192., 35520., 37792., 40064., 42336., 35640., 37920., 40200.,
      42480., 35760., 38048., 40336., 42624., 35880., 38176., 40472., 42768.,
      36000., 38304., 40608., 42912., 36120., 38432., 40744., 43056., 36240.,
      38560., 40880., 43200., 36360., 38688., 41016., 43344., 36480., 38816.,
      41152., 43488., 36600., 38944., 41288., 43632., 36720., 39072., 41424.,
      43776.};
  const std::array<int, 4> in_shape = {{1, 8, 10, 4}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, SAME1x9x8x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      40160., 48702., 57400.,  66248.,  58408.,  50430., 42320.,
      52500., 63427., 74480.,  85652.,  75264.,  64771., 54180.,
      65600., 79016., 92512.,  106080., 92960.,  79784., 66560.,
      79140., 95085., 111048., 127020., 111048., 95085., 79140.,
      66560., 79784., 92960.,  106080., 92512.,  79016., 65600.,
      54180., 64771., 75264.,  85652.,  74480.,  63427., 52500.,
      42320., 50430., 58408.,  66248.,  57400.,  48702., 40160.};
  const std::array<int, 4> in_shape = {{1, 9, 8, 1}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, VALID1x9x8x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      265.,  286.,  307.,  328.,  349.,  370.,  391.,  433.,  454.,  475.,
      496.,  517.,  538.,  559.,  601.,  622.,  643.,  664.,  685.,  706.,
      727.,  769.,  790.,  811.,  832.,  853.,  874.,  895.,  937.,  958.,
      979.,  1000., 1021., 1042., 1063., 1105., 1126., 1147., 1168., 1189.,
      1210., 1231., 1273., 1294., 1315., 1336., 1357., 1378., 1399.};
  const std::array<int, 4> in_shape = {{1, 9, 8, 1}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, SAME1x9x8x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      79630.,  80320.,  96558.,  97404.,  113792., 114800., 131320., 132496.,
      115766., 116816., 99942.,  100860., 83860.,  84640.,  104055., 105000.,
      125699., 126854., 147588., 148960., 169708., 171304., 149107., 150528.,
      128303., 129542., 107310., 108360., 129960., 131200., 156520., 158032.,
      183232., 185024., 210080., 212160., 184072., 185920., 157960., 159568.,
      131760., 133120., 156705., 158280., 188253., 190170., 219828., 222096.,
      251412., 254040., 219765., 222096., 188145., 190170., 156570., 158280.,
      131560., 133120., 157672., 159568., 183680., 185920., 209568., 212160.,
      182728., 185024., 156040., 158032., 129520., 131200., 106855., 108360.,
      127715., 129542., 148372., 150528., 168812., 171304., 146755., 148960.,
      124943., 126854., 103390., 105000., 83230.,  84640.,  99150.,  100860.,
      114800., 116816., 130168., 132496., 112742., 114800., 95622.,  97404.,
      78820.,  80320.};
  const std::array<int, 4> in_shape = {{1, 9, 8, 1}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, VALID1x9x8x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      473.,  530.,  509.,  572.,  545.,  614.,  581.,  656.,  617.,  698.,
      653.,  740.,  689.,  782.,  761.,  866.,  797.,  908.,  833.,  950.,
      869.,  992.,  905.,  1034., 941.,  1076., 977.,  1118., 1049., 1202.,
      1085., 1244., 1121., 1286., 1157., 1328., 1193., 1370., 1229., 1412.,
      1265., 1454., 1337., 1538., 1373., 1580., 1409., 1622., 1445., 1664.,
      1481., 1706., 1517., 1748., 1553., 1790., 1625., 1874., 1661., 1916.,
      1697., 1958., 1733., 2000., 1769., 2042., 1805., 2084., 1841., 2126.,
      1913., 2210., 1949., 2252., 1985., 2294., 2021., 2336., 2057., 2378.,
      2093., 2420., 2129., 2462., 2201., 2546., 2237., 2588., 2273., 2630.,
      2309., 2672., 2345., 2714., 2381., 2756., 2417., 2798.};
  const std::array<int, 4> in_shape = {{1, 9, 8, 1}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, SAME1x9x8x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      158570., 159260., 159950., 160640., 192270., 193116., 193962., 194808.,
      226576., 227584., 228592., 229600., 261464., 262640., 263816., 264992.,
      230482., 231532., 232582., 233632., 198966., 199884., 200802., 201720.,
      166940., 167720., 168500., 169280., 207165., 208110., 209055., 210000.,
      250243., 251398., 252553., 253708., 293804., 295176., 296548., 297920.,
      337820., 339416., 341012., 342608., 296793., 298214., 299635., 301056.,
      255367., 256606., 257845., 259084., 213570., 214620., 215670., 216720.,
      258680., 259920., 261160., 262400., 311528., 313040., 314552., 316064.,
      364672., 366464., 368256., 370048., 418080., 420160., 422240., 424320.,
      366296., 368144., 369992., 371840., 314312., 315920., 317528., 319136.,
      262160., 263520., 264880., 266240., 311835., 313410., 314985., 316560.,
      374589., 376506., 378423., 380340., 437388., 439656., 441924., 444192.,
      500196., 502824., 505452., 508080., 437199., 439530., 441861., 444192.,
      374265., 376290., 378315., 380340., 311430., 313140., 314850., 316560.,
      261560., 263120., 264680., 266240., 313448., 315344., 317240., 319136.,
      365120., 367360., 369600., 371840., 416544., 419136., 421728., 424320.,
      363160., 365456., 367752., 370048., 310088., 312080., 314072., 316064.,
      257360., 259040., 260720., 262400., 212205., 213710., 215215., 216720.,
      253603., 255430., 257257., 259084., 294588., 296744., 298900., 301056.,
      335132., 337624., 340116., 342608., 291305., 293510., 295715., 297920.,
      247975., 249886., 251797., 253708., 205170., 206780., 208390., 210000.,
      165050., 166460., 167870., 169280., 196590., 198300., 200010., 201720.,
      227584., 229600., 231616., 233632., 258008., 260336., 262664., 264992.,
      223426., 225484., 227542., 229600., 189462., 191244., 193026., 194808.,
      156140., 157640., 159140., 160640.};
  const std::array<int, 4> in_shape = {{1, 9, 8, 1}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, VALID1x9x8x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      889.,  946.,  1003., 1060., 955.,  1018., 1081., 1144., 1021., 1090.,
      1159., 1228., 1087., 1162., 1237., 1312., 1153., 1234., 1315., 1396.,
      1219., 1306., 1393., 1480., 1285., 1378., 1471., 1564., 1417., 1522.,
      1627., 1732., 1483., 1594., 1705., 1816., 1549., 1666., 1783., 1900.,
      1615., 1738., 1861., 1984., 1681., 1810., 1939., 2068., 1747., 1882.,
      2017., 2152., 1813., 1954., 2095., 2236., 1945., 2098., 2251., 2404.,
      2011., 2170., 2329., 2488., 2077., 2242., 2407., 2572., 2143., 2314.,
      2485., 2656., 2209., 2386., 2563., 2740., 2275., 2458., 2641., 2824.,
      2341., 2530., 2719., 2908., 2473., 2674., 2875., 3076., 2539., 2746.,
      2953., 3160., 2605., 2818., 3031., 3244., 2671., 2890., 3109., 3328.,
      2737., 2962., 3187., 3412., 2803., 3034., 3265., 3496., 2869., 3106.,
      3343., 3580., 3001., 3250., 3499., 3748., 3067., 3322., 3577., 3832.,
      3133., 3394., 3655., 3916., 3199., 3466., 3733., 4000., 3265., 3538.,
      3811., 4084., 3331., 3610., 3889., 4168., 3397., 3682., 3967., 4252.,
      3529., 3826., 4123., 4420., 3595., 3898., 4201., 4504., 3661., 3970.,
      4279., 4588., 3727., 4042., 4357., 4672., 3793., 4114., 4435., 4756.,
      3859., 4186., 4513., 4840., 3925., 4258., 4591., 4924., 4057., 4402.,
      4747., 5092., 4123., 4474., 4825., 5176., 4189., 4546., 4903., 5260.,
      4255., 4618., 4981., 5344., 4321., 4690., 5059., 5428., 4387., 4762.,
      5137., 5512., 4453., 4834., 5215., 5596.};
  const std::array<int, 4> in_shape = {{1, 9, 8, 1}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, SAME1x9x8x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      78820.,  80320.,  95622.,  97404.,  112742., 114800., 130168., 132496.,
      114800., 116816., 99150.,  100860., 83230.,  84640.,  103390., 105000.,
      124943., 126854., 146755., 148960., 168812., 171304., 148372., 150528.,
      127715., 129542., 106855., 108360., 129520., 131200., 156040., 158032.,
      182728., 185024., 209568., 212160., 183680., 185920., 157672., 159568.,
      131560., 133120., 156570., 158280., 188145., 190170., 219765., 222096.,
      251412., 254040., 219828., 222096., 188253., 190170., 156705., 158280.,
      131760., 133120., 157960., 159568., 184072., 185920., 210080., 212160.,
      183232., 185024., 156520., 158032., 129960., 131200., 107310., 108360.,
      128303., 129542., 149107., 150528., 169708., 171304., 147588., 148960.,
      125699., 126854., 104055., 105000., 83860.,  84640.,  99942.,  100860.,
      115766., 116816., 131320., 132496., 113792., 114800., 96558.,  97404.,
      79630.,  80320.};
  const std::array<int, 4> in_shape = {{1, 9, 8, 2}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, VALID1x9x8x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      509.,  530.,  551.,  572.,  593.,  614.,  635.,  656.,  677.,  698.,
      719.,  740.,  761.,  782.,  845.,  866.,  887.,  908.,  929.,  950.,
      971.,  992.,  1013., 1034., 1055., 1076., 1097., 1118., 1181., 1202.,
      1223., 1244., 1265., 1286., 1307., 1328., 1349., 1370., 1391., 1412.,
      1433., 1454., 1517., 1538., 1559., 1580., 1601., 1622., 1643., 1664.,
      1685., 1706., 1727., 1748., 1769., 1790., 1853., 1874., 1895., 1916.,
      1937., 1958., 1979., 2000., 2021., 2042., 2063., 2084., 2105., 2126.,
      2189., 2210., 2231., 2252., 2273., 2294., 2315., 2336., 2357., 2378.,
      2399., 2420., 2441., 2462., 2525., 2546., 2567., 2588., 2609., 2630.,
      2651., 2672., 2693., 2714., 2735., 2756., 2777., 2798.};
  const std::array<int, 4> in_shape = {{1, 9, 8, 2}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, SAME1x9x8x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      156290., 157640., 159260., 160640., 189588., 191244., 193116., 194808.,
      223510., 225484., 227584., 229600., 258032., 260336., 262640., 264992.,
      227542., 229600., 231532., 233632., 196500., 198300., 199884., 201720.,
      164930., 166460., 167720., 169280., 204925., 206780., 208110., 210000.,
      247618., 249886., 251398., 253708., 290815., 293510., 295176., 297920.,
      334488., 337624., 339416., 342608., 293951., 296744., 298214., 301056.,
      252994., 255430., 256606., 259084., 211645., 213710., 214620., 216720.,
      256600., 259040., 259920., 262400., 309104., 312080., 313040., 316064.,
      361928., 365456., 366464., 370048., 415040., 419136., 420160., 424320.,
      363720., 367360., 368144., 371840., 312176., 315344., 315920., 319136.,
      260440., 263120., 263520., 266240., 310035., 313140., 313410., 316560.,
      372510., 376290., 376506., 380340., 435057., 439530., 439656., 444192.,
      497640., 502824., 502824., 508080., 435057., 439656., 439530., 444192.,
      372510., 376506., 376290., 380340., 310035., 313410., 313140., 316560.,
      260440., 263520., 263120., 266240., 312176., 315920., 315344., 319136.,
      363720., 368144., 367360., 371840., 415040., 420160., 419136., 424320.,
      361928., 366464., 365456., 370048., 309104., 313040., 312080., 316064.,
      256600., 259920., 259040., 262400., 211645., 214620., 213710., 216720.,
      252994., 256606., 255430., 259084., 293951., 298214., 296744., 301056.,
      334488., 339416., 337624., 342608., 290815., 295176., 293510., 297920.,
      247618., 251398., 249886., 253708., 204925., 208110., 206780., 210000.,
      164930., 167720., 166460., 169280., 196500., 199884., 198300., 201720.,
      227542., 231532., 229600., 233632., 258032., 262640., 260336., 264992.,
      223510., 227584., 225484., 229600., 189588., 193116., 191244., 194808.,
      156290., 159260., 157640., 160640.};
  const std::array<int, 4> in_shape = {{1, 9, 8, 2}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, VALID1x9x8x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      910.,  1018., 946.,  1060., 982.,  1102., 1018., 1144., 1054., 1186.,
      1090., 1228., 1126., 1270., 1162., 1312., 1198., 1354., 1234., 1396.,
      1270., 1438., 1306., 1480., 1342., 1522., 1378., 1564., 1486., 1690.,
      1522., 1732., 1558., 1774., 1594., 1816., 1630., 1858., 1666., 1900.,
      1702., 1942., 1738., 1984., 1774., 2026., 1810., 2068., 1846., 2110.,
      1882., 2152., 1918., 2194., 1954., 2236., 2062., 2362., 2098., 2404.,
      2134., 2446., 2170., 2488., 2206., 2530., 2242., 2572., 2278., 2614.,
      2314., 2656., 2350., 2698., 2386., 2740., 2422., 2782., 2458., 2824.,
      2494., 2866., 2530., 2908., 2638., 3034., 2674., 3076., 2710., 3118.,
      2746., 3160., 2782., 3202., 2818., 3244., 2854., 3286., 2890., 3328.,
      2926., 3370., 2962., 3412., 2998., 3454., 3034., 3496., 3070., 3538.,
      3106., 3580., 3214., 3706., 3250., 3748., 3286., 3790., 3322., 3832.,
      3358., 3874., 3394., 3916., 3430., 3958., 3466., 4000., 3502., 4042.,
      3538., 4084., 3574., 4126., 3610., 4168., 3646., 4210., 3682., 4252.,
      3790., 4378., 3826., 4420., 3862., 4462., 3898., 4504., 3934., 4546.,
      3970., 4588., 4006., 4630., 4042., 4672., 4078., 4714., 4114., 4756.,
      4150., 4798., 4186., 4840., 4222., 4882., 4258., 4924., 4366., 5050.,
      4402., 5092., 4438., 5134., 4474., 5176., 4510., 5218., 4546., 5260.,
      4582., 5302., 4618., 5344., 4654., 5386., 4690., 5428., 4726., 5470.,
      4762., 5512., 4798., 5554., 4834., 5596.};
  const std::array<int, 4> in_shape = {{1, 9, 8, 2}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, SAME1x9x8x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      311230.,  312580.,  313930.,  315280.,  317140., 318520.,  319900.,
      321280.,  377520.,  379176.,  380832.,  382488., 384540.,  386232.,
      387924.,  389616.,  445046.,  447020.,  448994., 450968.,  453152.,
      455168.,  457184.,  459200.,  513760.,  516064., 518368.,  520672.,
      522928.,  525280.,  527632.,  529984.,  453026., 455084.,  457142.,
      459200.,  460964.,  463064.,  465164.,  467264., 391200.,  393000.,
      394800.,  396600.,  397932.,  399768.,  401604., 403440.,  328330.,
      329860.,  331390.,  332920.,  333880.,  335440., 337000.,  338560.,
      407995.,  409850.,  411705.,  413560.,  414330., 416220.,  418110.,
      420000.,  492968.,  495236.,  497504.,  499772., 500486.,  502796.,
      505106.,  507416.,  578935.,  581630.,  584325., 587020.,  587608.,
      590352.,  593096.,  595840.,  665840.,  668976., 672112.,  675248.,
      675640.,  678832.,  682024.,  685216.,  585109., 587902.,  590695.,
      593488.,  593586.,  596428.,  599270.,  602112., 503552.,  505988.,
      508424.,  510860.,  510734.,  513212.,  515690., 518168.,  421225.,
      423290.,  425355.,  427420.,  427140.,  429240., 431340.,  433440.,
      510760.,  513200.,  515640.,  518080.,  517360., 519840.,  522320.,
      524800.,  615232.,  618208.,  621184.,  624160., 623056.,  626080.,
      629104.,  632128.,  720328.,  723856.,  727384., 730912.,  729344.,
      732928.,  736512.,  740096.,  825984.,  830080., 834176.,  838272.,
      836160.,  840320.,  844480.,  848640.,  723800., 727440.,  731080.,
      734720.,  732592.,  736288.,  739984.,  743680., 621184.,  624352.,
      627520.,  630688.,  628624.,  631840.,  635056., 638272.,  518200.,
      520880.,  523560.,  526240.,  524320.,  527040., 529760.,  532480.,
      616965.,  620070.,  623175.,  626280.,  623670., 626820.,  629970.,
      633120.,  741240.,  745020.,  748800.,  752580., 749178.,  753012.,
      756846.,  760680.,  865641.,  870114.,  874587., 879060.,  874776.,
      879312.,  883848.,  888384.,  990096.,  995280., 1000464., 1005648.,
      1000392., 1005648., 1010904., 1016160., 865515., 870114.,  874713.,
      879312.,  874398.,  879060.,  883722.,  888384., 741024.,  745020.,
      749016.,  753012.,  748530.,  752580.,  756630., 760680.,  616695.,
      620070.,  623445.,  626820.,  622860.,  626280., 629700.,  633120.,
      517800.,  520880.,  523960.,  527040.,  523120., 526240.,  529360.,
      532480.,  620608.,  624352.,  628096.,  631840., 626896.,  630688.,
      634480.,  638272.,  723016.,  727440.,  731864., 736288.,  730240.,
      734720.,  739200.,  743680.,  824960.,  830080., 835200.,  840320.,
      833088.,  838272.,  843456.,  848640.,  719320., 723856.,  728392.,
      732928.,  726320.,  730912.,  735504.,  740096., 614272.,  618208.,
      622144.,  626080.,  620176.,  624160.,  628144., 632128.,  509880.,
      513200.,  516520.,  519840.,  514720.,  518080., 521440.,  524800.,
      420315.,  423290.,  426265.,  429240.,  424410., 427420.,  430430.,
      433440.,  502376.,  505988.,  509600.,  513212., 507206.,  510860.,
      514514.,  518168.,  583639.,  587902.,  592165., 596428.,  589176.,
      593488.,  597800.,  602112.,  664048.,  668976., 673904.,  678832.,
      670264.,  675248.,  680232.,  685216.,  577269., 581630.,  585991.,
      590352.,  582610.,  587020.,  591430.,  595840., 491456.,  495236.,
      499016.,  502796.,  495950.,  499772.,  503594., 507416.,  406665.,
      409850.,  413035.,  416220.,  410340.,  413560., 416780.,  420000.,
      327070.,  329860.,  332650.,  335440.,  330100., 332920.,  335740.,
      338560.,  389616.,  393000.,  396384.,  399768., 393180.,  396600.,
      400020.,  403440.,  451094.,  455084.,  459074., 463064.,  455168.,
      459200.,  463232.,  467264.,  511456.,  516064., 520672.,  525280.,
      516016.,  520672.,  525328.,  529984.,  442946., 447020.,  451094.,
      455168.,  446852.,  450968.,  455084.,  459200., 375648.,  379176.,
      382704.,  386232.,  378924.,  382488.,  386052., 389616.,  309610.,
      312580.,  315550.,  318520.,  312280.,  315280., 318280.,  321280.};
  const std::array<int, 4> in_shape = {{1, 9, 8, 2}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, VALID1x9x8x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1712.,  1820.,  1928.,  2036.,  1778.,  1892.,  2006.,  2120.,  1844.,
      1964.,  2084.,  2204.,  1910.,  2036.,  2162.,  2288.,  1976.,  2108.,
      2240.,  2372.,  2042.,  2180.,  2318.,  2456.,  2108.,  2252.,  2396.,
      2540.,  2174.,  2324.,  2474.,  2624.,  2240.,  2396.,  2552.,  2708.,
      2306.,  2468.,  2630.,  2792.,  2372.,  2540.,  2708.,  2876.,  2438.,
      2612.,  2786.,  2960.,  2504.,  2684.,  2864.,  3044.,  2570.,  2756.,
      2942.,  3128.,  2768.,  2972.,  3176.,  3380.,  2834.,  3044.,  3254.,
      3464.,  2900.,  3116.,  3332.,  3548.,  2966.,  3188.,  3410.,  3632.,
      3032.,  3260.,  3488.,  3716.,  3098.,  3332.,  3566.,  3800.,  3164.,
      3404.,  3644.,  3884.,  3230.,  3476.,  3722.,  3968.,  3296.,  3548.,
      3800.,  4052.,  3362.,  3620.,  3878.,  4136.,  3428.,  3692.,  3956.,
      4220.,  3494.,  3764.,  4034.,  4304.,  3560.,  3836.,  4112.,  4388.,
      3626.,  3908.,  4190.,  4472.,  3824.,  4124.,  4424.,  4724.,  3890.,
      4196.,  4502.,  4808.,  3956.,  4268.,  4580.,  4892.,  4022.,  4340.,
      4658.,  4976.,  4088.,  4412.,  4736.,  5060.,  4154.,  4484.,  4814.,
      5144.,  4220.,  4556.,  4892.,  5228.,  4286.,  4628.,  4970.,  5312.,
      4352.,  4700.,  5048.,  5396.,  4418.,  4772.,  5126.,  5480.,  4484.,
      4844.,  5204.,  5564.,  4550.,  4916.,  5282.,  5648.,  4616.,  4988.,
      5360.,  5732.,  4682.,  5060.,  5438.,  5816.,  4880.,  5276.,  5672.,
      6068.,  4946.,  5348.,  5750.,  6152.,  5012.,  5420.,  5828.,  6236.,
      5078.,  5492.,  5906.,  6320.,  5144.,  5564.,  5984.,  6404.,  5210.,
      5636.,  6062.,  6488.,  5276.,  5708.,  6140.,  6572.,  5342.,  5780.,
      6218.,  6656.,  5408.,  5852.,  6296.,  6740.,  5474.,  5924.,  6374.,
      6824.,  5540.,  5996.,  6452.,  6908.,  5606.,  6068.,  6530.,  6992.,
      5672.,  6140.,  6608.,  7076.,  5738.,  6212.,  6686.,  7160.,  5936.,
      6428.,  6920.,  7412.,  6002.,  6500.,  6998.,  7496.,  6068.,  6572.,
      7076.,  7580.,  6134.,  6644.,  7154.,  7664.,  6200.,  6716.,  7232.,
      7748.,  6266.,  6788.,  7310.,  7832.,  6332.,  6860.,  7388.,  7916.,
      6398.,  6932.,  7466.,  8000.,  6464.,  7004.,  7544.,  8084.,  6530.,
      7076.,  7622.,  8168.,  6596.,  7148.,  7700.,  8252.,  6662.,  7220.,
      7778.,  8336.,  6728.,  7292.,  7856.,  8420.,  6794.,  7364.,  7934.,
      8504.,  6992.,  7580.,  8168.,  8756.,  7058.,  7652.,  8246.,  8840.,
      7124.,  7724.,  8324.,  8924.,  7190.,  7796.,  8402.,  9008.,  7256.,
      7868.,  8480.,  9092.,  7322.,  7940.,  8558.,  9176.,  7388.,  8012.,
      8636.,  9260.,  7454.,  8084.,  8714.,  9344.,  7520.,  8156.,  8792.,
      9428.,  7586.,  8228.,  8870.,  9512.,  7652.,  8300.,  8948.,  9596.,
      7718.,  8372.,  9026.,  9680.,  7784.,  8444.,  9104.,  9764.,  7850.,
      8516.,  9182.,  9848.,  8048.,  8732.,  9416.,  10100., 8114.,  8804.,
      9494.,  10184., 8180.,  8876.,  9572.,  10268., 8246.,  8948.,  9650.,
      10352., 8312.,  9020.,  9728.,  10436., 8378.,  9092.,  9806.,  10520.,
      8444.,  9164.,  9884.,  10604., 8510.,  9236.,  9962.,  10688., 8576.,
      9308.,  10040., 10772., 8642.,  9380.,  10118., 10856., 8708.,  9452.,
      10196., 10940., 8774.,  9524.,  10274., 11024., 8840.,  9596.,  10352.,
      11108., 8906.,  9668.,  10430., 11192.};
  const std::array<int, 4> in_shape = {{1, 9, 8, 2}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, SAME1x9x8x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      156140., 157640., 159140., 160640., 189462., 191244., 193026., 194808.,
      223426., 225484., 227542., 229600., 258008., 260336., 262664., 264992.,
      227584., 229600., 231616., 233632., 196590., 198300., 200010., 201720.,
      165050., 166460., 167870., 169280., 205170., 206780., 208390., 210000.,
      247975., 249886., 251797., 253708., 291305., 293510., 295715., 297920.,
      335132., 337624., 340116., 342608., 294588., 296744., 298900., 301056.,
      253603., 255430., 257257., 259084., 212205., 213710., 215215., 216720.,
      257360., 259040., 260720., 262400., 310088., 312080., 314072., 316064.,
      363160., 365456., 367752., 370048., 416544., 419136., 421728., 424320.,
      365120., 367360., 369600., 371840., 313448., 315344., 317240., 319136.,
      261560., 263120., 264680., 266240., 311430., 313140., 314850., 316560.,
      374265., 376290., 378315., 380340., 437199., 439530., 441861., 444192.,
      500196., 502824., 505452., 508080., 437388., 439656., 441924., 444192.,
      374589., 376506., 378423., 380340., 311835., 313410., 314985., 316560.,
      262160., 263520., 264880., 266240., 314312., 315920., 317528., 319136.,
      366296., 368144., 369992., 371840., 418080., 420160., 422240., 424320.,
      364672., 366464., 368256., 370048., 311528., 313040., 314552., 316064.,
      258680., 259920., 261160., 262400., 213570., 214620., 215670., 216720.,
      255367., 256606., 257845., 259084., 296793., 298214., 299635., 301056.,
      337820., 339416., 341012., 342608., 293804., 295176., 296548., 297920.,
      250243., 251398., 252553., 253708., 207165., 208110., 209055., 210000.,
      166940., 167720., 168500., 169280., 198966., 199884., 200802., 201720.,
      230482., 231532., 232582., 233632., 261464., 262640., 263816., 264992.,
      226576., 227584., 228592., 229600., 192270., 193116., 193962., 194808.,
      158570., 159260., 159950., 160640.};
  const std::array<int, 4> in_shape = {{1, 9, 8, 4}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, VALID1x9x8x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      997.,  1018., 1039., 1060., 1081., 1102., 1123., 1144., 1165., 1186.,
      1207., 1228., 1249., 1270., 1291., 1312., 1333., 1354., 1375., 1396.,
      1417., 1438., 1459., 1480., 1501., 1522., 1543., 1564., 1669., 1690.,
      1711., 1732., 1753., 1774., 1795., 1816., 1837., 1858., 1879., 1900.,
      1921., 1942., 1963., 1984., 2005., 2026., 2047., 2068., 2089., 2110.,
      2131., 2152., 2173., 2194., 2215., 2236., 2341., 2362., 2383., 2404.,
      2425., 2446., 2467., 2488., 2509., 2530., 2551., 2572., 2593., 2614.,
      2635., 2656., 2677., 2698., 2719., 2740., 2761., 2782., 2803., 2824.,
      2845., 2866., 2887., 2908., 3013., 3034., 3055., 3076., 3097., 3118.,
      3139., 3160., 3181., 3202., 3223., 3244., 3265., 3286., 3307., 3328.,
      3349., 3370., 3391., 3412., 3433., 3454., 3475., 3496., 3517., 3538.,
      3559., 3580., 3685., 3706., 3727., 3748., 3769., 3790., 3811., 3832.,
      3853., 3874., 3895., 3916., 3937., 3958., 3979., 4000., 4021., 4042.,
      4063., 4084., 4105., 4126., 4147., 4168., 4189., 4210., 4231., 4252.,
      4357., 4378., 4399., 4420., 4441., 4462., 4483., 4504., 4525., 4546.,
      4567., 4588., 4609., 4630., 4651., 4672., 4693., 4714., 4735., 4756.,
      4777., 4798., 4819., 4840., 4861., 4882., 4903., 4924., 5029., 5050.,
      5071., 5092., 5113., 5134., 5155., 5176., 5197., 5218., 5239., 5260.,
      5281., 5302., 5323., 5344., 5365., 5386., 5407., 5428., 5449., 5470.,
      5491., 5512., 5533., 5554., 5575., 5596.};
  const std::array<int, 4> in_shape = {{1, 9, 8, 4}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, SAME1x9x8x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      309610.,  312280.,  312580.,  315280.,  315550.,  318280., 318520.,
      321280.,  375648.,  378924.,  379176.,  382488.,  382704., 386052.,
      386232.,  389616.,  442946.,  446852.,  447020.,  450968., 451094.,
      455084.,  455168.,  459200.,  511456.,  516016.,  516064., 520672.,
      520672.,  525328.,  525280.,  529984.,  451094.,  455168., 455084.,
      459200.,  459074.,  463232.,  463064.,  467264.,  389616., 393180.,
      393000.,  396600.,  396384.,  400020.,  399768.,  403440., 327070.,
      330100.,  329860.,  332920.,  332650.,  335740.,  335440., 338560.,
      406665.,  410340.,  409850.,  413560.,  413035.,  416780., 416220.,
      420000.,  491456.,  495950.,  495236.,  499772.,  499016., 503594.,
      502796.,  507416.,  577269.,  582610.,  581630.,  587020., 585991.,
      591430.,  590352.,  595840.,  664048.,  670264.,  668976., 675248.,
      673904.,  680232.,  678832.,  685216.,  583639.,  589176., 587902.,
      593488.,  592165.,  597800.,  596428.,  602112.,  502376., 507206.,
      505988.,  510860.,  509600.,  514514.,  513212.,  518168., 420315.,
      424410.,  423290.,  427420.,  426265.,  430430.,  429240., 433440.,
      509880.,  514720.,  513200.,  518080.,  516520.,  521440., 519840.,
      524800.,  614272.,  620176.,  618208.,  624160.,  622144., 628144.,
      626080.,  632128.,  719320.,  726320.,  723856.,  730912., 728392.,
      735504.,  732928.,  740096.,  824960.,  833088.,  830080., 838272.,
      835200.,  843456.,  840320.,  848640.,  723016.,  730240., 727440.,
      734720.,  731864.,  739200.,  736288.,  743680.,  620608., 626896.,
      624352.,  630688.,  628096.,  634480.,  631840.,  638272., 517800.,
      523120.,  520880.,  526240.,  523960.,  529360.,  527040., 532480.,
      616695.,  622860.,  620070.,  626280.,  623445.,  629700., 626820.,
      633120.,  741024.,  748530.,  745020.,  752580.,  749016., 756630.,
      753012.,  760680.,  865515.,  874398.,  870114.,  879060., 874713.,
      883722.,  879312.,  888384.,  990096.,  1000392., 995280., 1005648.,
      1000464., 1010904., 1005648., 1016160., 865641.,  874776., 870114.,
      879312.,  874587.,  883848.,  879060.,  888384.,  741240., 749178.,
      745020.,  753012.,  748800.,  756846.,  752580.,  760680., 616965.,
      623670.,  620070.,  626820.,  623175.,  629970.,  626280., 633120.,
      518200.,  524320.,  520880.,  527040.,  523560.,  529760., 526240.,
      532480.,  621184.,  628624.,  624352.,  631840.,  627520., 635056.,
      630688.,  638272.,  723800.,  732592.,  727440.,  736288., 731080.,
      739984.,  734720.,  743680.,  825984.,  836160.,  830080., 840320.,
      834176.,  844480.,  838272.,  848640.,  720328.,  729344., 723856.,
      732928.,  727384.,  736512.,  730912.,  740096.,  615232., 623056.,
      618208.,  626080.,  621184.,  629104.,  624160.,  632128., 510760.,
      517360.,  513200.,  519840.,  515640.,  522320.,  518080., 524800.,
      421225.,  427140.,  423290.,  429240.,  425355.,  431340., 427420.,
      433440.,  503552.,  510734.,  505988.,  513212.,  508424., 515690.,
      510860.,  518168.,  585109.,  593586.,  587902.,  596428., 590695.,
      599270.,  593488.,  602112.,  665840.,  675640.,  668976., 678832.,
      672112.,  682024.,  675248.,  685216.,  578935.,  587608., 581630.,
      590352.,  584325.,  593096.,  587020.,  595840.,  492968., 500486.,
      495236.,  502796.,  497504.,  505106.,  499772.,  507416., 407995.,
      414330.,  409850.,  416220.,  411705.,  418110.,  413560., 420000.,
      328330.,  333880.,  329860.,  335440.,  331390.,  337000., 332920.,
      338560.,  391200.,  397932.,  393000.,  399768.,  394800., 401604.,
      396600.,  403440.,  453026.,  460964.,  455084.,  463064., 457142.,
      465164.,  459200.,  467264.,  513760.,  522928.,  516064., 525280.,
      518368.,  527632.,  520672.,  529984.,  445046.,  453152., 447020.,
      455168.,  448994.,  457184.,  450968.,  459200.,  377520., 384540.,
      379176.,  386232.,  380832.,  387924.,  382488.,  389616., 311230.,
      317140.,  312580.,  318520.,  313930.,  319900.,  315280., 321280.};
  const std::array<int, 4> in_shape = {{1, 9, 8, 4}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, VALID1x9x8x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1784., 1994.,  1820., 2036.,  1856., 2078.,  1892., 2120.,  1928., 2162.,
      1964., 2204.,  2000., 2246.,  2036., 2288.,  2072., 2330.,  2108., 2372.,
      2144., 2414.,  2180., 2456.,  2216., 2498.,  2252., 2540.,  2288., 2582.,
      2324., 2624.,  2360., 2666.,  2396., 2708.,  2432., 2750.,  2468., 2792.,
      2504., 2834.,  2540., 2876.,  2576., 2918.,  2612., 2960.,  2648., 3002.,
      2684., 3044.,  2720., 3086.,  2756., 3128.,  2936., 3338.,  2972., 3380.,
      3008., 3422.,  3044., 3464.,  3080., 3506.,  3116., 3548.,  3152., 3590.,
      3188., 3632.,  3224., 3674.,  3260., 3716.,  3296., 3758.,  3332., 3800.,
      3368., 3842.,  3404., 3884.,  3440., 3926.,  3476., 3968.,  3512., 4010.,
      3548., 4052.,  3584., 4094.,  3620., 4136.,  3656., 4178.,  3692., 4220.,
      3728., 4262.,  3764., 4304.,  3800., 4346.,  3836., 4388.,  3872., 4430.,
      3908., 4472.,  4088., 4682.,  4124., 4724.,  4160., 4766.,  4196., 4808.,
      4232., 4850.,  4268., 4892.,  4304., 4934.,  4340., 4976.,  4376., 5018.,
      4412., 5060.,  4448., 5102.,  4484., 5144.,  4520., 5186.,  4556., 5228.,
      4592., 5270.,  4628., 5312.,  4664., 5354.,  4700., 5396.,  4736., 5438.,
      4772., 5480.,  4808., 5522.,  4844., 5564.,  4880., 5606.,  4916., 5648.,
      4952., 5690.,  4988., 5732.,  5024., 5774.,  5060., 5816.,  5240., 6026.,
      5276., 6068.,  5312., 6110.,  5348., 6152.,  5384., 6194.,  5420., 6236.,
      5456., 6278.,  5492., 6320.,  5528., 6362.,  5564., 6404.,  5600., 6446.,
      5636., 6488.,  5672., 6530.,  5708., 6572.,  5744., 6614.,  5780., 6656.,
      5816., 6698.,  5852., 6740.,  5888., 6782.,  5924., 6824.,  5960., 6866.,
      5996., 6908.,  6032., 6950.,  6068., 6992.,  6104., 7034.,  6140., 7076.,
      6176., 7118.,  6212., 7160.,  6392., 7370.,  6428., 7412.,  6464., 7454.,
      6500., 7496.,  6536., 7538.,  6572., 7580.,  6608., 7622.,  6644., 7664.,
      6680., 7706.,  6716., 7748.,  6752., 7790.,  6788., 7832.,  6824., 7874.,
      6860., 7916.,  6896., 7958.,  6932., 8000.,  6968., 8042.,  7004., 8084.,
      7040., 8126.,  7076., 8168.,  7112., 8210.,  7148., 8252.,  7184., 8294.,
      7220., 8336.,  7256., 8378.,  7292., 8420.,  7328., 8462.,  7364., 8504.,
      7544., 8714.,  7580., 8756.,  7616., 8798.,  7652., 8840.,  7688., 8882.,
      7724., 8924.,  7760., 8966.,  7796., 9008.,  7832., 9050.,  7868., 9092.,
      7904., 9134.,  7940., 9176.,  7976., 9218.,  8012., 9260.,  8048., 9302.,
      8084., 9344.,  8120., 9386.,  8156., 9428.,  8192., 9470.,  8228., 9512.,
      8264., 9554.,  8300., 9596.,  8336., 9638.,  8372., 9680.,  8408., 9722.,
      8444., 9764.,  8480., 9806.,  8516., 9848.,  8696., 10058., 8732., 10100.,
      8768., 10142., 8804., 10184., 8840., 10226., 8876., 10268., 8912., 10310.,
      8948., 10352., 8984., 10394., 9020., 10436., 9056., 10478., 9092., 10520.,
      9128., 10562., 9164., 10604., 9200., 10646., 9236., 10688., 9272., 10730.,
      9308., 10772., 9344., 10814., 9380., 10856., 9416., 10898., 9452., 10940.,
      9488., 10982., 9524., 11024., 9560., 11066., 9596., 11108., 9632., 11150.,
      9668., 11192.};
  const std::array<int, 4> in_shape = {{1, 9, 8, 4}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, SAME1x9x8x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      616550.,  619220.,  621890.,  624560.,  622460.,  625160.,  627860.,
      630560.,  628370.,  631100.,  633830.,  636560.,  634280.,  637040.,
      639800.,  642560.,  748020.,  751296.,  754572.,  757848.,  755040.,
      758352.,  761664.,  764976.,  762060.,  765408.,  768756.,  772104.,
      769080.,  772464.,  775848.,  779232.,  881986.,  885892.,  889798.,
      893704.,  890092.,  894040.,  897988.,  901936.,  898198.,  902188.,
      906178.,  910168.,  906304.,  910336.,  914368.,  918400.,  1018352.,
      1022912., 1027472., 1032032., 1027520., 1032128., 1036736., 1041344.,
      1036688., 1041344., 1046000., 1050656., 1045856., 1050560., 1055264.,
      1059968., 898114.,  902188.,  906262.,  910336.,  906052.,  910168.,
      914284.,  918400.,  913990.,  918148.,  922306.,  926464.,  921928.,
      926128.,  930328.,  934528.,  775668.,  779232.,  782796.,  786360.,
      782400.,  786000.,  789600.,  793200.,  789132.,  792768.,  796404.,
      800040.,  795864.,  799536.,  803208.,  806880.,  651110.,  654140.,
      657170.,  660200.,  656660.,  659720.,  662780.,  665840.,  662210.,
      665300.,  668390.,  671480.,  667760.,  670880.,  674000.,  677120.,
      809655.,  813330.,  817005.,  820680.,  815990.,  819700.,  823410.,
      827120.,  822325.,  826070.,  829815.,  833560.,  828660.,  832440.,
      836220.,  840000.,  978418.,  982912.,  987406.,  991900.,  985936.,
      990472.,  995008.,  999544.,  993454.,  998032.,  1002610., 1007188.,
      1000972., 1005592., 1010212., 1014832., 1149197., 1154538., 1159879.,
      1165220., 1157870., 1163260., 1168650., 1174040., 1166543., 1171982.,
      1177421., 1182860., 1175216., 1180704., 1186192., 1191680., 1321880.,
      1328096., 1334312., 1340528., 1331680., 1337952., 1344224., 1350496.,
      1341480., 1347808., 1354136., 1360464., 1351280., 1357664., 1364048.,
      1370432., 1161741., 1167278., 1172815., 1178352., 1170218., 1175804.,
      1181390., 1186976., 1178695., 1184330., 1189965., 1195600., 1187172.,
      1192856., 1198540., 1204224., 999922.,  1004752., 1009582., 1014412.,
      1007104., 1011976., 1016848., 1021720., 1014286., 1019200., 1024114.,
      1029028., 1021468., 1026424., 1031380., 1036336., 836535.,  840630.,
      844725.,  848820.,  842450.,  846580.,  850710.,  854840.,  848365.,
      852530.,  856695.,  860860.,  854280.,  858480.,  862680.,  866880.,
      1014920., 1019760., 1024600., 1029440., 1021520., 1026400., 1031280.,
      1036160., 1028120., 1033040., 1037960., 1042880., 1034720., 1039680.,
      1044640., 1049600., 1222640., 1228544., 1234448., 1240352., 1230464.,
      1236416., 1242368., 1248320., 1238288., 1244288., 1250288., 1256288.,
      1246112., 1252160., 1258208., 1264256., 1431640., 1438640., 1445640.,
      1452640., 1440656., 1447712., 1454768., 1461824., 1449672., 1456784.,
      1463896., 1471008., 1458688., 1465856., 1473024., 1480192., 1641792.,
      1649920., 1658048., 1666176., 1651968., 1660160., 1668352., 1676544.,
      1662144., 1670400., 1678656., 1686912., 1672320., 1680640., 1688960.,
      1697280., 1438808., 1446032., 1453256., 1460480., 1447600., 1454880.,
      1462160., 1469440., 1456392., 1463728., 1471064., 1478400., 1465184.,
      1472576., 1479968., 1487360., 1234928., 1241216., 1247504., 1253792.,
      1242368., 1248704., 1255040., 1261376., 1249808., 1256192., 1262576.,
      1268960., 1257248., 1263680., 1270112., 1276544., 1030280., 1035600.,
      1040920., 1046240., 1036400., 1041760., 1047120., 1052480., 1042520.,
      1047920., 1053320., 1058720., 1048640., 1054080., 1059520., 1064960.,
      1227225., 1233390., 1239555., 1245720., 1233930., 1240140., 1246350.,
      1252560., 1240635., 1246890., 1253145., 1259400., 1247340., 1253640.,
      1259940., 1266240., 1474542., 1482048., 1489554., 1497060., 1482480.,
      1490040., 1497600., 1505160., 1490418., 1498032., 1505646., 1513260.,
      1498356., 1506024., 1513692., 1521360., 1722147., 1731030., 1739913.,
      1748796., 1731282., 1740228., 1749174., 1758120., 1740417., 1749426.,
      1758435., 1767444., 1749552., 1758624., 1767696., 1776768., 1969896.,
      1980192., 1990488., 2000784., 1980192., 1990560., 2000928., 2011296.,
      1990488., 2000928., 2011368., 2021808., 2000784., 2011296., 2021808.,
      2032320., 1722147., 1731282., 1740417., 1749552., 1731030., 1740228.,
      1749426., 1758624., 1739913., 1749174., 1758435., 1767696., 1748796.,
      1758120., 1767444., 1776768., 1474542., 1482480., 1490418., 1498356.,
      1482048., 1490040., 1498032., 1506024., 1489554., 1497600., 1505646.,
      1513692., 1497060., 1505160., 1513260., 1521360., 1227225., 1233930.,
      1240635., 1247340., 1233390., 1240140., 1246890., 1253640., 1239555.,
      1246350., 1253145., 1259940., 1245720., 1252560., 1259400., 1266240.,
      1030280., 1036400., 1042520., 1048640., 1035600., 1041760., 1047920.,
      1054080., 1040920., 1047120., 1053320., 1059520., 1046240., 1052480.,
      1058720., 1064960., 1234928., 1242368., 1249808., 1257248., 1241216.,
      1248704., 1256192., 1263680., 1247504., 1255040., 1262576., 1270112.,
      1253792., 1261376., 1268960., 1276544., 1438808., 1447600., 1456392.,
      1465184., 1446032., 1454880., 1463728., 1472576., 1453256., 1462160.,
      1471064., 1479968., 1460480., 1469440., 1478400., 1487360., 1641792.,
      1651968., 1662144., 1672320., 1649920., 1660160., 1670400., 1680640.,
      1658048., 1668352., 1678656., 1688960., 1666176., 1676544., 1686912.,
      1697280., 1431640., 1440656., 1449672., 1458688., 1438640., 1447712.,
      1456784., 1465856., 1445640., 1454768., 1463896., 1473024., 1452640.,
      1461824., 1471008., 1480192., 1222640., 1230464., 1238288., 1246112.,
      1228544., 1236416., 1244288., 1252160., 1234448., 1242368., 1250288.,
      1258208., 1240352., 1248320., 1256288., 1264256., 1014920., 1021520.,
      1028120., 1034720., 1019760., 1026400., 1033040., 1039680., 1024600.,
      1031280., 1037960., 1044640., 1029440., 1036160., 1042880., 1049600.,
      836535.,  842450.,  848365.,  854280.,  840630.,  846580.,  852530.,
      858480.,  844725.,  850710.,  856695.,  862680.,  848820.,  854840.,
      860860.,  866880.,  999922.,  1007104., 1014286., 1021468., 1004752.,
      1011976., 1019200., 1026424., 1009582., 1016848., 1024114., 1031380.,
      1014412., 1021720., 1029028., 1036336., 1161741., 1170218., 1178695.,
      1187172., 1167278., 1175804., 1184330., 1192856., 1172815., 1181390.,
      1189965., 1198540., 1178352., 1186976., 1195600., 1204224., 1321880.,
      1331680., 1341480., 1351280., 1328096., 1337952., 1347808., 1357664.,
      1334312., 1344224., 1354136., 1364048., 1340528., 1350496., 1360464.,
      1370432., 1149197., 1157870., 1166543., 1175216., 1154538., 1163260.,
      1171982., 1180704., 1159879., 1168650., 1177421., 1186192., 1165220.,
      1174040., 1182860., 1191680., 978418.,  985936.,  993454.,  1000972.,
      982912.,  990472.,  998032.,  1005592., 987406.,  995008.,  1002610.,
      1010212., 991900.,  999544.,  1007188., 1014832., 809655.,  815990.,
      822325.,  828660.,  813330.,  819700.,  826070.,  832440.,  817005.,
      823410.,  829815.,  836220.,  820680.,  827120.,  833560.,  840000.,
      651110.,  656660.,  662210.,  667760.,  654140.,  659720.,  665300.,
      670880.,  657170.,  662780.,  668390.,  674000.,  660200.,  665840.,
      671480.,  677120.,  775668.,  782400.,  789132.,  795864.,  779232.,
      786000.,  792768.,  799536.,  782796.,  789600.,  796404.,  803208.,
      786360.,  793200.,  800040.,  806880.,  898114.,  906052.,  913990.,
      921928.,  902188.,  910168.,  918148.,  926128.,  906262.,  914284.,
      922306.,  930328.,  910336.,  918400.,  926464.,  934528.,  1018352.,
      1027520., 1036688., 1045856., 1022912., 1032128., 1041344., 1050560.,
      1027472., 1036736., 1046000., 1055264., 1032032., 1041344., 1050656.,
      1059968., 881986.,  890092.,  898198.,  906304.,  885892.,  894040.,
      902188.,  910336.,  889798.,  897988.,  906178.,  914368.,  893704.,
      901936.,  910168.,  918400.,  748020.,  755040.,  762060.,  769080.,
      751296.,  758352.,  765408.,  772464.,  754572.,  761664.,  768756.,
      775848.,  757848.,  764976.,  772104.,  779232.,  616550.,  622460.,
      628370.,  634280.,  619220.,  625160.,  631100.,  637040.,  621890.,
      627860.,  633830.,  639800.,  624560.,  630560.,  636560.,  642560.};
  const std::array<int, 4> in_shape = {{1, 9, 8, 4}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, VALID1x9x8x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      3358.,  3568.,  3778.,  3988.,  3424.,  3640.,  3856.,  4072.,  3490.,
      3712.,  3934.,  4156.,  3556.,  3784.,  4012.,  4240.,  3622.,  3856.,
      4090.,  4324.,  3688.,  3928.,  4168.,  4408.,  3754.,  4000.,  4246.,
      4492.,  3820.,  4072.,  4324.,  4576.,  3886.,  4144.,  4402.,  4660.,
      3952.,  4216.,  4480.,  4744.,  4018.,  4288.,  4558.,  4828.,  4084.,
      4360.,  4636.,  4912.,  4150.,  4432.,  4714.,  4996.,  4216.,  4504.,
      4792.,  5080.,  4282.,  4576.,  4870.,  5164.,  4348.,  4648.,  4948.,
      5248.,  4414.,  4720.,  5026.,  5332.,  4480.,  4792.,  5104.,  5416.,
      4546.,  4864.,  5182.,  5500.,  4612.,  4936.,  5260.,  5584.,  4678.,
      5008.,  5338.,  5668.,  4744.,  5080.,  5416.,  5752.,  4810.,  5152.,
      5494.,  5836.,  4876.,  5224.,  5572.,  5920.,  4942.,  5296.,  5650.,
      6004.,  5008.,  5368.,  5728.,  6088.,  5074.,  5440.,  5806.,  6172.,
      5140.,  5512.,  5884.,  6256.,  5470.,  5872.,  6274.,  6676.,  5536.,
      5944.,  6352.,  6760.,  5602.,  6016.,  6430.,  6844.,  5668.,  6088.,
      6508.,  6928.,  5734.,  6160.,  6586.,  7012.,  5800.,  6232.,  6664.,
      7096.,  5866.,  6304.,  6742.,  7180.,  5932.,  6376.,  6820.,  7264.,
      5998.,  6448.,  6898.,  7348.,  6064.,  6520.,  6976.,  7432.,  6130.,
      6592.,  7054.,  7516.,  6196.,  6664.,  7132.,  7600.,  6262.,  6736.,
      7210.,  7684.,  6328.,  6808.,  7288.,  7768.,  6394.,  6880.,  7366.,
      7852.,  6460.,  6952.,  7444.,  7936.,  6526.,  7024.,  7522.,  8020.,
      6592.,  7096.,  7600.,  8104.,  6658.,  7168.,  7678.,  8188.,  6724.,
      7240.,  7756.,  8272.,  6790.,  7312.,  7834.,  8356.,  6856.,  7384.,
      7912.,  8440.,  6922.,  7456.,  7990.,  8524.,  6988.,  7528.,  8068.,
      8608.,  7054.,  7600.,  8146.,  8692.,  7120.,  7672.,  8224.,  8776.,
      7186.,  7744.,  8302.,  8860.,  7252.,  7816.,  8380.,  8944.,  7582.,
      8176.,  8770.,  9364.,  7648.,  8248.,  8848.,  9448.,  7714.,  8320.,
      8926.,  9532.,  7780.,  8392.,  9004.,  9616.,  7846.,  8464.,  9082.,
      9700.,  7912.,  8536.,  9160.,  9784.,  7978.,  8608.,  9238.,  9868.,
      8044.,  8680.,  9316.,  9952.,  8110.,  8752.,  9394.,  10036., 8176.,
      8824.,  9472.,  10120., 8242.,  8896.,  9550.,  10204., 8308.,  8968.,
      9628.,  10288., 8374.,  9040.,  9706.,  10372., 8440.,  9112.,  9784.,
      10456., 8506.,  9184.,  9862.,  10540., 8572.,  9256.,  9940.,  10624.,
      8638.,  9328.,  10018., 10708., 8704.,  9400.,  10096., 10792., 8770.,
      9472.,  10174., 10876., 8836.,  9544.,  10252., 10960., 8902.,  9616.,
      10330., 11044., 8968.,  9688.,  10408., 11128., 9034.,  9760.,  10486.,
      11212., 9100.,  9832.,  10564., 11296., 9166.,  9904.,  10642., 11380.,
      9232.,  9976.,  10720., 11464., 9298.,  10048., 10798., 11548., 9364.,
      10120., 10876., 11632., 9694.,  10480., 11266., 12052., 9760.,  10552.,
      11344., 12136., 9826.,  10624., 11422., 12220., 9892.,  10696., 11500.,
      12304., 9958.,  10768., 11578., 12388., 10024., 10840., 11656., 12472.,
      10090., 10912., 11734., 12556., 10156., 10984., 11812., 12640., 10222.,
      11056., 11890., 12724., 10288., 11128., 11968., 12808., 10354., 11200.,
      12046., 12892., 10420., 11272., 12124., 12976., 10486., 11344., 12202.,
      13060., 10552., 11416., 12280., 13144., 10618., 11488., 12358., 13228.,
      10684., 11560., 12436., 13312., 10750., 11632., 12514., 13396., 10816.,
      11704., 12592., 13480., 10882., 11776., 12670., 13564., 10948., 11848.,
      12748., 13648., 11014., 11920., 12826., 13732., 11080., 11992., 12904.,
      13816., 11146., 12064., 12982., 13900., 11212., 12136., 13060., 13984.,
      11278., 12208., 13138., 14068., 11344., 12280., 13216., 14152., 11410.,
      12352., 13294., 14236., 11476., 12424., 13372., 14320., 11806., 12784.,
      13762., 14740., 11872., 12856., 13840., 14824., 11938., 12928., 13918.,
      14908., 12004., 13000., 13996., 14992., 12070., 13072., 14074., 15076.,
      12136., 13144., 14152., 15160., 12202., 13216., 14230., 15244., 12268.,
      13288., 14308., 15328., 12334., 13360., 14386., 15412., 12400., 13432.,
      14464., 15496., 12466., 13504., 14542., 15580., 12532., 13576., 14620.,
      15664., 12598., 13648., 14698., 15748., 12664., 13720., 14776., 15832.,
      12730., 13792., 14854., 15916., 12796., 13864., 14932., 16000., 12862.,
      13936., 15010., 16084., 12928., 14008., 15088., 16168., 12994., 14080.,
      15166., 16252., 13060., 14152., 15244., 16336., 13126., 14224., 15322.,
      16420., 13192., 14296., 15400., 16504., 13258., 14368., 15478., 16588.,
      13324., 14440., 15556., 16672., 13390., 14512., 15634., 16756., 13456.,
      14584., 15712., 16840., 13522., 14656., 15790., 16924., 13588., 14728.,
      15868., 17008., 13918., 15088., 16258., 17428., 13984., 15160., 16336.,
      17512., 14050., 15232., 16414., 17596., 14116., 15304., 16492., 17680.,
      14182., 15376., 16570., 17764., 14248., 15448., 16648., 17848., 14314.,
      15520., 16726., 17932., 14380., 15592., 16804., 18016., 14446., 15664.,
      16882., 18100., 14512., 15736., 16960., 18184., 14578., 15808., 17038.,
      18268., 14644., 15880., 17116., 18352., 14710., 15952., 17194., 18436.,
      14776., 16024., 17272., 18520., 14842., 16096., 17350., 18604., 14908.,
      16168., 17428., 18688., 14974., 16240., 17506., 18772., 15040., 16312.,
      17584., 18856., 15106., 16384., 17662., 18940., 15172., 16456., 17740.,
      19024., 15238., 16528., 17818., 19108., 15304., 16600., 17896., 19192.,
      15370., 16672., 17974., 19276., 15436., 16744., 18052., 19360., 15502.,
      16816., 18130., 19444., 15568., 16888., 18208., 19528., 15634., 16960.,
      18286., 19612., 15700., 17032., 18364., 19696., 16030., 17392., 18754.,
      20116., 16096., 17464., 18832., 20200., 16162., 17536., 18910., 20284.,
      16228., 17608., 18988., 20368., 16294., 17680., 19066., 20452., 16360.,
      17752., 19144., 20536., 16426., 17824., 19222., 20620., 16492., 17896.,
      19300., 20704., 16558., 17968., 19378., 20788., 16624., 18040., 19456.,
      20872., 16690., 18112., 19534., 20956., 16756., 18184., 19612., 21040.,
      16822., 18256., 19690., 21124., 16888., 18328., 19768., 21208., 16954.,
      18400., 19846., 21292., 17020., 18472., 19924., 21376., 17086., 18544.,
      20002., 21460., 17152., 18616., 20080., 21544., 17218., 18688., 20158.,
      21628., 17284., 18760., 20236., 21712., 17350., 18832., 20314., 21796.,
      17416., 18904., 20392., 21880., 17482., 18976., 20470., 21964., 17548.,
      19048., 20548., 22048., 17614., 19120., 20626., 22132., 17680., 19192.,
      20704., 22216., 17746., 19264., 20782., 22300., 17812., 19336., 20860.,
      22384.};
  const std::array<int, 4> in_shape = {{1, 9, 8, 4}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, SAME1x9x9x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      61026.,  71862.,  82872.,  94050.,  84168.,  74130.,  63942.,
      79702.,  93541.,  107520., 121632., 108528., 95305.,  81970.,
      99512.,  116480., 133536., 150672., 134112., 117488., 100808.,
      119970., 140112., 160272., 180441., 160272., 140112., 119970.,
      100808., 117488., 134112., 150672., 133536., 116480., 99512.,
      81970.,  95305.,  108528., 121632., 107520., 93541.,  79702.,
      63942.,  74130.,  84168.,  94050.,  82872.,  71862.,  61026.};
  const std::array<int, 4> in_shape = {{1, 9, 9, 1}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, VALID1x9x9x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      663.,  708.,  753.,  798.,  843.,  888.,  933.,  1068., 1113., 1158.,
      1203., 1248., 1293., 1338., 1473., 1518., 1563., 1608., 1653., 1698.,
      1743., 1878., 1923., 1968., 2013., 2058., 2103., 2148., 2283., 2328.,
      2373., 2418., 2463., 2508., 2553., 2688., 2733., 2778., 2823., 2868.,
      2913., 2958., 3093., 3138., 3183., 3228., 3273., 3318., 3363.};
  const std::array<int, 4> in_shape = {{1, 9, 9, 1}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, SAME1x9x9x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      121116., 122052., 142611., 143724., 164448., 165744., 186615., 188100.,
      166992., 168336., 147063., 148260., 126840., 127884., 158123., 159404.,
      185563., 187082., 213276., 215040., 241248., 243264., 215236., 217056.,
      188993., 190610., 162533., 163940., 197344., 199024., 230972., 232960.,
      264768., 267072., 298716., 301344., 265856., 268224., 232876., 234976.,
      199792., 201616., 237807., 239940., 277704., 280224., 317628., 320544.,
      357561., 360882., 317556., 320544., 277578., 280224., 237645., 239940.,
      199504., 201616., 232484., 234976., 265344., 268224., 298068., 301344.,
      264128., 267072., 230356., 232960., 196768., 199024., 161903., 163940.,
      188209., 190610., 214284., 217056., 240114., 243264., 212212., 215040.,
      184583., 187082., 157241., 159404., 125976., 127884., 146013., 148260.,
      165744., 168336., 185157., 188100., 163104., 165744., 141393., 143724.,
      120036., 122052.};
  const std::array<int, 4> in_shape = {{1, 9, 9, 1}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, VALID1x9x9x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1227., 1326., 1308., 1416., 1389., 1506., 1470., 1596., 1551., 1686.,
      1632., 1776., 1713., 1866., 1956., 2136., 2037., 2226., 2118., 2316.,
      2199., 2406., 2280., 2496., 2361., 2586., 2442., 2676., 2685., 2946.,
      2766., 3036., 2847., 3126., 2928., 3216., 3009., 3306., 3090., 3396.,
      3171., 3486., 3414., 3756., 3495., 3846., 3576., 3936., 3657., 4026.,
      3738., 4116., 3819., 4206., 3900., 4296., 4143., 4566., 4224., 4656.,
      4305., 4746., 4386., 4836., 4467., 4926., 4548., 5016., 4629., 5106.,
      4872., 5376., 4953., 5466., 5034., 5556., 5115., 5646., 5196., 5736.,
      5277., 5826., 5358., 5916., 5601., 6186., 5682., 6276., 5763., 6366.,
      5844., 6456., 5925., 6546., 6006., 6636., 6087., 6726.};
  const std::array<int, 4> in_shape = {{1, 9, 9, 1}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, SAME1x9x9x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      241296., 242232., 243168., 244104., 284109., 285222., 286335., 287448.,
      327600., 328896., 330192., 331488., 371745., 373230., 374715., 376200.,
      332640., 333984., 335328., 336672., 292929., 294126., 295323., 296520.,
      252636., 253680., 254724., 255768., 314965., 316246., 317527., 318808.,
      369607., 371126., 372645., 374164., 424788., 426552., 428316., 430080.,
      480480., 482496., 484512., 486528., 428652., 430472., 432292., 434112.,
      376369., 377986., 379603., 381220., 323659., 325066., 326473., 327880.,
      393008., 394688., 396368., 398048., 459956., 461944., 463932., 465920.,
      527232., 529536., 531840., 534144., 594804., 597432., 600060., 602688.,
      529344., 531712., 534080., 536448., 463652., 465752., 467852., 469952.,
      397760., 399584., 401408., 403232., 473481., 475614., 477747., 479880.,
      552888., 555408., 557928., 560448., 632340., 635256., 638172., 641088.,
      711801., 715122., 718443., 721764., 632124., 635112., 638100., 641088.,
      552510., 555156., 557802., 560448., 472995., 475290., 477585., 479880.,
      396896., 399008., 401120., 403232., 462476., 464968., 467460., 469952.,
      527808., 530688., 533568., 536448., 592860., 596136., 599412., 602688.,
      525312., 528256., 531200., 534144., 458108., 460712., 463316., 465920.,
      391280., 393536., 395792., 398048., 321769., 323806., 325843., 327880.,
      374017., 376418., 378819., 381220., 425796., 428568., 431340., 434112.,
      477078., 480228., 483378., 486528., 421596., 424424., 427252., 430080.,
      366667., 369166., 371665., 374164., 312319., 314482., 316645., 318808.,
      250044., 251952., 253860., 255768., 289779., 292026., 294273., 296520.,
      328896., 331488., 334080., 336672., 367371., 370314., 373257., 376200.,
      323568., 326208., 328848., 331488., 280455., 282786., 285117., 287448.,
      238056., 240072., 242088., 244104.};
  const std::array<int, 4> in_shape = {{1, 9, 9, 1}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, VALID1x9x9x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      2355.,  2454.,  2553.,  2652.,  2508.,  2616.,  2724.,  2832.,  2661.,
      2778.,  2895.,  3012.,  2814.,  2940.,  3066.,  3192.,  2967.,  3102.,
      3237.,  3372.,  3120.,  3264.,  3408.,  3552.,  3273.,  3426.,  3579.,
      3732.,  3732.,  3912.,  4092.,  4272.,  3885.,  4074.,  4263.,  4452.,
      4038.,  4236.,  4434.,  4632.,  4191.,  4398.,  4605.,  4812.,  4344.,
      4560.,  4776.,  4992.,  4497.,  4722.,  4947.,  5172.,  4650.,  4884.,
      5118.,  5352.,  5109.,  5370.,  5631.,  5892.,  5262.,  5532.,  5802.,
      6072.,  5415.,  5694.,  5973.,  6252.,  5568.,  5856.,  6144.,  6432.,
      5721.,  6018.,  6315.,  6612.,  5874.,  6180.,  6486.,  6792.,  6027.,
      6342.,  6657.,  6972.,  6486.,  6828.,  7170.,  7512.,  6639.,  6990.,
      7341.,  7692.,  6792.,  7152.,  7512.,  7872.,  6945.,  7314.,  7683.,
      8052.,  7098.,  7476.,  7854.,  8232.,  7251.,  7638.,  8025.,  8412.,
      7404.,  7800.,  8196.,  8592.,  7863.,  8286.,  8709.,  9132.,  8016.,
      8448.,  8880.,  9312.,  8169.,  8610.,  9051.,  9492.,  8322.,  8772.,
      9222.,  9672.,  8475.,  8934.,  9393.,  9852.,  8628.,  9096.,  9564.,
      10032., 8781.,  9258.,  9735.,  10212., 9240.,  9744.,  10248., 10752.,
      9393.,  9906.,  10419., 10932., 9546.,  10068., 10590., 11112., 9699.,
      10230., 10761., 11292., 9852.,  10392., 10932., 11472., 10005., 10554.,
      11103., 11652., 10158., 10716., 11274., 11832., 10617., 11202., 11787.,
      12372., 10770., 11364., 11958., 12552., 10923., 11526., 12129., 12732.,
      11076., 11688., 12300., 12912., 11229., 11850., 12471., 13092., 11382.,
      12012., 12642., 13272., 11535., 12174., 12813., 13452.};
  const std::array<int, 4> in_shape = {{1, 9, 9, 1}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, SAME1x9x9x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      120036., 122052., 141393., 143724., 163104., 165744., 185157., 188100.,
      165744., 168336., 146013., 148260., 125976., 127884., 157241., 159404.,
      184583., 187082., 212212., 215040., 240114., 243264., 214284., 217056.,
      188209., 190610., 161903., 163940., 196768., 199024., 230356., 232960.,
      264128., 267072., 298068., 301344., 265344., 268224., 232484., 234976.,
      199504., 201616., 237645., 239940., 277578., 280224., 317556., 320544.,
      357561., 360882., 317628., 320544., 277704., 280224., 237807., 239940.,
      199792., 201616., 232876., 234976., 265856., 268224., 298716., 301344.,
      264768., 267072., 230972., 232960., 197344., 199024., 162533., 163940.,
      188993., 190610., 215236., 217056., 241248., 243264., 213276., 215040.,
      185563., 187082., 158123., 159404., 126840., 127884., 147063., 148260.,
      166992., 168336., 186615., 188100., 164448., 165744., 142611., 143724.,
      121116., 122052.};
  const std::array<int, 4> in_shape = {{1, 9, 9, 2}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, VALID1x9x9x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1281., 1326., 1371., 1416., 1461., 1506., 1551., 1596., 1641., 1686.,
      1731., 1776., 1821., 1866., 2091., 2136., 2181., 2226., 2271., 2316.,
      2361., 2406., 2451., 2496., 2541., 2586., 2631., 2676., 2901., 2946.,
      2991., 3036., 3081., 3126., 3171., 3216., 3261., 3306., 3351., 3396.,
      3441., 3486., 3711., 3756., 3801., 3846., 3891., 3936., 3981., 4026.,
      4071., 4116., 4161., 4206., 4251., 4296., 4521., 4566., 4611., 4656.,
      4701., 4746., 4791., 4836., 4881., 4926., 4971., 5016., 5061., 5106.,
      5331., 5376., 5421., 5466., 5511., 5556., 5601., 5646., 5691., 5736.,
      5781., 5826., 5871., 5916., 6141., 6186., 6231., 6276., 6321., 6366.,
      6411., 6456., 6501., 6546., 6591., 6636., 6681., 6726.};
  const std::array<int, 4> in_shape = {{1, 9, 9, 2}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, SAME1x9x9x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      238236., 240072., 242232., 244104., 280602., 282786., 285222., 287448.,
      323664., 326208., 328896., 331488., 367398., 370314., 373230., 376200.,
      328848., 331488., 333984., 336672., 289674., 292026., 294126., 296520.,
      249900., 251952., 253680., 255768., 311962., 314482., 316246., 318808.,
      366177., 369166., 371126., 374164., 420952., 424424., 426552., 430080.,
      476259., 480228., 482496., 486528., 424984., 428568., 430472., 434112.,
      373233., 376418., 377986., 381220., 321034., 323806., 325066., 327880.,
      390224., 393536., 394688., 398048., 456792., 460712., 461944., 465920.,
      523712., 528256., 529536., 534144., 590952., 596136., 597432., 602688.,
      526016., 530688., 531712., 536448., 460824., 464968., 465752., 469952.,
      395408., 399008., 399584., 403232., 471078., 475290., 475614., 479880.,
      550179., 555156., 555408., 560448., 629352., 635112., 635256., 641088.,
      708561., 715122., 715122., 721764., 629352., 635256., 635112., 641088.,
      550179., 555408., 555156., 560448., 471078., 475614., 475290., 479880.,
      395408., 399584., 399008., 403232., 460824., 465752., 464968., 469952.,
      526016., 531712., 530688., 536448., 590952., 597432., 596136., 602688.,
      523712., 529536., 528256., 534144., 456792., 461944., 460712., 465920.,
      390224., 394688., 393536., 398048., 321034., 325066., 323806., 327880.,
      373233., 377986., 376418., 381220., 424984., 430472., 428568., 434112.,
      476259., 482496., 480228., 486528., 420952., 426552., 424424., 430080.,
      366177., 371126., 369166., 374164., 311962., 316246., 314482., 318808.,
      249900., 253680., 251952., 255768., 289674., 294126., 292026., 296520.,
      328848., 333984., 331488., 336672., 367398., 373230., 370314., 376200.,
      323664., 328896., 326208., 331488., 280602., 285222., 282786., 287448.,
      238236., 242232., 240072., 244104.};
  const std::array<int, 4> in_shape = {{1, 9, 9, 2}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, VALID1x9x9x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      2373.,  2562.,  2454.,  2652.,  2535.,  2742.,  2616.,  2832.,  2697.,
      2922.,  2778.,  3012.,  2859.,  3102.,  2940.,  3192.,  3021.,  3282.,
      3102.,  3372.,  3183.,  3462.,  3264.,  3552.,  3345.,  3642.,  3426.,
      3732.,  3831.,  4182.,  3912.,  4272.,  3993.,  4362.,  4074.,  4452.,
      4155.,  4542.,  4236.,  4632.,  4317.,  4722.,  4398.,  4812.,  4479.,
      4902.,  4560.,  4992.,  4641.,  5082.,  4722.,  5172.,  4803.,  5262.,
      4884.,  5352.,  5289.,  5802.,  5370.,  5892.,  5451.,  5982.,  5532.,
      6072.,  5613.,  6162.,  5694.,  6252.,  5775.,  6342.,  5856.,  6432.,
      5937.,  6522.,  6018.,  6612.,  6099.,  6702.,  6180.,  6792.,  6261.,
      6882.,  6342.,  6972.,  6747.,  7422.,  6828.,  7512.,  6909.,  7602.,
      6990.,  7692.,  7071.,  7782.,  7152.,  7872.,  7233.,  7962.,  7314.,
      8052.,  7395.,  8142.,  7476.,  8232.,  7557.,  8322.,  7638.,  8412.,
      7719.,  8502.,  7800.,  8592.,  8205.,  9042.,  8286.,  9132.,  8367.,
      9222.,  8448.,  9312.,  8529.,  9402.,  8610.,  9492.,  8691.,  9582.,
      8772.,  9672.,  8853.,  9762.,  8934.,  9852.,  9015.,  9942.,  9096.,
      10032., 9177.,  10122., 9258.,  10212., 9663.,  10662., 9744.,  10752.,
      9825.,  10842., 9906.,  10932., 9987.,  11022., 10068., 11112., 10149.,
      11202., 10230., 11292., 10311., 11382., 10392., 11472., 10473., 11562.,
      10554., 11652., 10635., 11742., 10716., 11832., 11121., 12282., 11202.,
      12372., 11283., 12462., 11364., 12552., 11445., 12642., 11526., 12732.,
      11607., 12822., 11688., 12912., 11769., 13002., 11850., 13092., 11931.,
      13182., 12012., 13272., 12093., 13362., 12174., 13452.};
  const std::array<int, 4> in_shape = {{1, 9, 9, 2}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, SAME1x9x9x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      474636.,  476472.,  478308.,  480144.,  482592.,  484464.,  486336.,
      488208.,  559020.,  561204.,  563388.,  565572.,  568218.,  570444.,
      572670.,  574896.,  644784.,  647328.,  649872.,  652416.,  655200.,
      657792.,  660384.,  662976.,  731880.,  734796.,  737712.,  740628.,
      743490.,  746460.,  749430.,  752400.,  655056.,  657696.,  660336.,
      662976.,  665280.,  667968.,  670656.,  673344.,  576996.,  579348.,
      581700.,  584052.,  585858.,  588252.,  590646.,  593040.,  497748.,
      499800.,  501852.,  503904.,  505272.,  507360.,  509448.,  511536.,
      621404.,  623924.,  626444.,  628964.,  629930.,  632492.,  635054.,
      637616.,  729365.,  732354.,  735343.,  738332.,  739214.,  742252.,
      745290.,  748328.,  838432.,  841904.,  845376.,  848848.,  849576.,
      853104.,  856632.,  860160.,  948549.,  952518.,  956487.,  960456.,
      960960.,  964992.,  969024.,  973056.,  846384.,  849968.,  853552.,
      857136.,  857304.,  860944.,  864584.,  868224.,  743281.,  746466.,
      749651.,  752836.,  752738.,  755972.,  759206.,  762440.,  639296.,
      642068.,  644840.,  647612.,  647318.,  650132.,  652946.,  655760.,
      777136.,  780448.,  783760.,  787072.,  786016.,  789376.,  792736.,
      796096.,  909664.,  913584.,  917504.,  921424.,  919912.,  923888.,
      927864.,  931840.,  1042880., 1047424., 1051968., 1056512., 1054464.,
      1059072., 1063680., 1068288., 1176720., 1181904., 1187088., 1192272.,
      1189608., 1194864., 1200120., 1205376., 1047360., 1052032., 1056704.,
      1061376., 1058688., 1063424., 1068160., 1072896., 917504.,  921648.,
      925792.,  929936.,  927304.,  931504.,  935704.,  939904.,  787216.,
      790816.,  794416.,  798016.,  795520.,  799168.,  802816.,  806464.,
      937944.,  942156.,  946368.,  950580.,  946962.,  951228.,  955494.,
      959760.,  1095381., 1100358., 1105335., 1110312., 1105776., 1110816.,
      1115856., 1120896., 1252944., 1258704., 1264464., 1270224., 1264680.,
      1270512., 1276344., 1282176., 1410561., 1417122., 1423683., 1430244.,
      1423602., 1430244., 1436886., 1443528., 1252800., 1258704., 1264608.,
      1270512., 1264248., 1270224., 1276200., 1282176., 1095129., 1100358.,
      1105587., 1110816., 1105020., 1110312., 1115604., 1120896., 937620.,
      942156.,  946692.,  951228.,  945990.,  950580.,  955170.,  959760.,
      786640.,  790816.,  794992.,  799168.,  793792.,  798016.,  802240.,
      806464.,  916720.,  921648.,  926576.,  931504.,  924952.,  929936.,
      934920.,  939904.,  1046336., 1052032., 1057728., 1063424., 1055616.,
      1061376., 1067136., 1072896., 1175424., 1181904., 1188384., 1194864.,
      1185720., 1192272., 1198824., 1205376., 1041600., 1047424., 1053248.,
      1059072., 1050624., 1056512., 1062400., 1068288., 908432.,  913584.,
      918736.,  923888.,  916216.,  921424.,  926632.,  931840.,  775984.,
      780448.,  784912.,  789376.,  782560.,  787072.,  791584.,  796096.,
      638036.,  642068.,  646100.,  650132.,  643538.,  647612.,  651686.,
      655760.,  741713.,  746466.,  751219.,  755972.,  748034.,  752836.,
      757638.,  762440.,  844480.,  849968.,  855456.,  860944.,  851592.,
      857136.,  862680.,  868224.,  946281.,  952518.,  958755.,  964992.,
      954156.,  960456.,  966756.,  973056.,  836304.,  841904.,  847504.,
      853104.,  843192.,  848848.,  854504.,  860160.,  727405.,  732354.,
      737303.,  742252.,  733334.,  738332.,  743330.,  748328.,  619640.,
      623924.,  628208.,  632492.,  624638.,  628964.,  633290.,  637616.,
      496020.,  499800.,  503580.,  507360.,  500088.,  503904.,  507720.,
      511536.,  574896.,  579348.,  583800.,  588252.,  579558.,  584052.,
      588546.,  593040.,  652560.,  657696.,  662832.,  667968.,  657792.,
      662976.,  668160.,  673344.,  728964.,  734796.,  740628.,  746460.,
      734742.,  740628.,  746514.,  752400.,  642096.,  647328.,  652560.,
      657792.,  647136.,  652416.,  657696.,  662976.,  556584.,  561204.,
      565824.,  570444.,  560910.,  565572.,  570234.,  574896.,  472476.,
      476472.,  480468.,  484464.,  476112.,  480144.,  484176.,  488208.};
  const std::array<int, 4> in_shape = {{1, 9, 9, 2}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, VALID1x9x9x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      4557.,  4746.,  4935.,  5124.,  4710.,  4908.,  5106.,  5304.,  4863.,
      5070.,  5277.,  5484.,  5016.,  5232.,  5448.,  5664.,  5169.,  5394.,
      5619.,  5844.,  5322.,  5556.,  5790.,  6024.,  5475.,  5718.,  5961.,
      6204.,  5628.,  5880.,  6132.,  6384.,  5781.,  6042.,  6303.,  6564.,
      5934.,  6204.,  6474.,  6744.,  6087.,  6366.,  6645.,  6924.,  6240.,
      6528.,  6816.,  7104.,  6393.,  6690.,  6987.,  7284.,  6546.,  6852.,
      7158.,  7464.,  7311.,  7662.,  8013.,  8364.,  7464.,  7824.,  8184.,
      8544.,  7617.,  7986.,  8355.,  8724.,  7770.,  8148.,  8526.,  8904.,
      7923.,  8310.,  8697.,  9084.,  8076.,  8472.,  8868.,  9264.,  8229.,
      8634.,  9039.,  9444.,  8382.,  8796.,  9210.,  9624.,  8535.,  8958.,
      9381.,  9804.,  8688.,  9120.,  9552.,  9984.,  8841.,  9282.,  9723.,
      10164., 8994.,  9444.,  9894.,  10344., 9147.,  9606.,  10065., 10524.,
      9300.,  9768.,  10236., 10704., 10065., 10578., 11091., 11604., 10218.,
      10740., 11262., 11784., 10371., 10902., 11433., 11964., 10524., 11064.,
      11604., 12144., 10677., 11226., 11775., 12324., 10830., 11388., 11946.,
      12504., 10983., 11550., 12117., 12684., 11136., 11712., 12288., 12864.,
      11289., 11874., 12459., 13044., 11442., 12036., 12630., 13224., 11595.,
      12198., 12801., 13404., 11748., 12360., 12972., 13584., 11901., 12522.,
      13143., 13764., 12054., 12684., 13314., 13944., 12819., 13494., 14169.,
      14844., 12972., 13656., 14340., 15024., 13125., 13818., 14511., 15204.,
      13278., 13980., 14682., 15384., 13431., 14142., 14853., 15564., 13584.,
      14304., 15024., 15744., 13737., 14466., 15195., 15924., 13890., 14628.,
      15366., 16104., 14043., 14790., 15537., 16284., 14196., 14952., 15708.,
      16464., 14349., 15114., 15879., 16644., 14502., 15276., 16050., 16824.,
      14655., 15438., 16221., 17004., 14808., 15600., 16392., 17184., 15573.,
      16410., 17247., 18084., 15726., 16572., 17418., 18264., 15879., 16734.,
      17589., 18444., 16032., 16896., 17760., 18624., 16185., 17058., 17931.,
      18804., 16338., 17220., 18102., 18984., 16491., 17382., 18273., 19164.,
      16644., 17544., 18444., 19344., 16797., 17706., 18615., 19524., 16950.,
      17868., 18786., 19704., 17103., 18030., 18957., 19884., 17256., 18192.,
      19128., 20064., 17409., 18354., 19299., 20244., 17562., 18516., 19470.,
      20424., 18327., 19326., 20325., 21324., 18480., 19488., 20496., 21504.,
      18633., 19650., 20667., 21684., 18786., 19812., 20838., 21864., 18939.,
      19974., 21009., 22044., 19092., 20136., 21180., 22224., 19245., 20298.,
      21351., 22404., 19398., 20460., 21522., 22584., 19551., 20622., 21693.,
      22764., 19704., 20784., 21864., 22944., 19857., 20946., 22035., 23124.,
      20010., 21108., 22206., 23304., 20163., 21270., 22377., 23484., 20316.,
      21432., 22548., 23664., 21081., 22242., 23403., 24564., 21234., 22404.,
      23574., 24744., 21387., 22566., 23745., 24924., 21540., 22728., 23916.,
      25104., 21693., 22890., 24087., 25284., 21846., 23052., 24258., 25464.,
      21999., 23214., 24429., 25644., 22152., 23376., 24600., 25824., 22305.,
      23538., 24771., 26004., 22458., 23700., 24942., 26184., 22611., 23862.,
      25113., 26364., 22764., 24024., 25284., 26544., 22917., 24186., 25455.,
      26724., 23070., 24348., 25626., 26904.};
  const std::array<int, 4> in_shape = {{1, 9, 9, 2}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, SAME1x9x9x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      238056., 240072., 242088., 244104., 280455., 282786., 285117., 287448.,
      323568., 326208., 328848., 331488., 367371., 370314., 373257., 376200.,
      328896., 331488., 334080., 336672., 289779., 292026., 294273., 296520.,
      250044., 251952., 253860., 255768., 312319., 314482., 316645., 318808.,
      366667., 369166., 371665., 374164., 421596., 424424., 427252., 430080.,
      477078., 480228., 483378., 486528., 425796., 428568., 431340., 434112.,
      374017., 376418., 378819., 381220., 321769., 323806., 325843., 327880.,
      391280., 393536., 395792., 398048., 458108., 460712., 463316., 465920.,
      525312., 528256., 531200., 534144., 592860., 596136., 599412., 602688.,
      527808., 530688., 533568., 536448., 462476., 464968., 467460., 469952.,
      396896., 399008., 401120., 403232., 472995., 475290., 477585., 479880.,
      552510., 555156., 557802., 560448., 632124., 635112., 638100., 641088.,
      711801., 715122., 718443., 721764., 632340., 635256., 638172., 641088.,
      552888., 555408., 557928., 560448., 473481., 475614., 477747., 479880.,
      397760., 399584., 401408., 403232., 463652., 465752., 467852., 469952.,
      529344., 531712., 534080., 536448., 594804., 597432., 600060., 602688.,
      527232., 529536., 531840., 534144., 459956., 461944., 463932., 465920.,
      393008., 394688., 396368., 398048., 323659., 325066., 326473., 327880.,
      376369., 377986., 379603., 381220., 428652., 430472., 432292., 434112.,
      480480., 482496., 484512., 486528., 424788., 426552., 428316., 430080.,
      369607., 371126., 372645., 374164., 314965., 316246., 317527., 318808.,
      252636., 253680., 254724., 255768., 292929., 294126., 295323., 296520.,
      332640., 333984., 335328., 336672., 371745., 373230., 374715., 376200.,
      327600., 328896., 330192., 331488., 284109., 285222., 286335., 287448.,
      241296., 242232., 243168., 244104.};
  const std::array<int, 4> in_shape = {{1, 9, 9, 4}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, VALID1x9x9x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      2517.,  2562.,  2607.,  2652.,  2697.,  2742.,  2787.,  2832.,  2877.,
      2922.,  2967.,  3012.,  3057.,  3102.,  3147.,  3192.,  3237.,  3282.,
      3327.,  3372.,  3417.,  3462.,  3507.,  3552.,  3597.,  3642.,  3687.,
      3732.,  4137.,  4182.,  4227.,  4272.,  4317.,  4362.,  4407.,  4452.,
      4497.,  4542.,  4587.,  4632.,  4677.,  4722.,  4767.,  4812.,  4857.,
      4902.,  4947.,  4992.,  5037.,  5082.,  5127.,  5172.,  5217.,  5262.,
      5307.,  5352.,  5757.,  5802.,  5847.,  5892.,  5937.,  5982.,  6027.,
      6072.,  6117.,  6162.,  6207.,  6252.,  6297.,  6342.,  6387.,  6432.,
      6477.,  6522.,  6567.,  6612.,  6657.,  6702.,  6747.,  6792.,  6837.,
      6882.,  6927.,  6972.,  7377.,  7422.,  7467.,  7512.,  7557.,  7602.,
      7647.,  7692.,  7737.,  7782.,  7827.,  7872.,  7917.,  7962.,  8007.,
      8052.,  8097.,  8142.,  8187.,  8232.,  8277.,  8322.,  8367.,  8412.,
      8457.,  8502.,  8547.,  8592.,  8997.,  9042.,  9087.,  9132.,  9177.,
      9222.,  9267.,  9312.,  9357.,  9402.,  9447.,  9492.,  9537.,  9582.,
      9627.,  9672.,  9717.,  9762.,  9807.,  9852.,  9897.,  9942.,  9987.,
      10032., 10077., 10122., 10167., 10212., 10617., 10662., 10707., 10752.,
      10797., 10842., 10887., 10932., 10977., 11022., 11067., 11112., 11157.,
      11202., 11247., 11292., 11337., 11382., 11427., 11472., 11517., 11562.,
      11607., 11652., 11697., 11742., 11787., 11832., 12237., 12282., 12327.,
      12372., 12417., 12462., 12507., 12552., 12597., 12642., 12687., 12732.,
      12777., 12822., 12867., 12912., 12957., 13002., 13047., 13092., 13137.,
      13182., 13227., 13272., 13317., 13362., 13407., 13452.};
  const std::array<int, 4> in_shape = {{1, 9, 9, 4}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, SAME1x9x9x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      472476.,  476112.,  476472.,  480144.,  480468.,  484176.,  484464.,
      488208.,  556584.,  560910.,  561204.,  565572.,  565824.,  570234.,
      570444.,  574896.,  642096.,  647136.,  647328.,  652416.,  652560.,
      657696.,  657792.,  662976.,  728964.,  734742.,  734796.,  740628.,
      740628.,  746514.,  746460.,  752400.,  652560.,  657792.,  657696.,
      662976.,  662832.,  668160.,  667968.,  673344.,  574896.,  579558.,
      579348.,  584052.,  583800.,  588546.,  588252.,  593040.,  496020.,
      500088.,  499800.,  503904.,  503580.,  507720.,  507360.,  511536.,
      619640.,  624638.,  623924.,  628964.,  628208.,  633290.,  632492.,
      637616.,  727405.,  733334.,  732354.,  738332.,  737303.,  743330.,
      742252.,  748328.,  836304.,  843192.,  841904.,  848848.,  847504.,
      854504.,  853104.,  860160.,  946281.,  954156.,  952518.,  960456.,
      958755.,  966756.,  964992.,  973056.,  844480.,  851592.,  849968.,
      857136.,  855456.,  862680.,  860944.,  868224.,  741713.,  748034.,
      746466.,  752836.,  751219.,  757638.,  755972.,  762440.,  638036.,
      643538.,  642068.,  647612.,  646100.,  651686.,  650132.,  655760.,
      775984.,  782560.,  780448.,  787072.,  784912.,  791584.,  789376.,
      796096.,  908432.,  916216.,  913584.,  921424.,  918736.,  926632.,
      923888.,  931840.,  1041600., 1050624., 1047424., 1056512., 1053248.,
      1062400., 1059072., 1068288., 1175424., 1185720., 1181904., 1192272.,
      1188384., 1198824., 1194864., 1205376., 1046336., 1055616., 1052032.,
      1061376., 1057728., 1067136., 1063424., 1072896., 916720.,  924952.,
      921648.,  929936.,  926576.,  934920.,  931504.,  939904.,  786640.,
      793792.,  790816.,  798016.,  794992.,  802240.,  799168.,  806464.,
      937620.,  945990.,  942156.,  950580.,  946692.,  955170.,  951228.,
      959760.,  1095129., 1105020., 1100358., 1110312., 1105587., 1115604.,
      1110816., 1120896., 1252800., 1264248., 1258704., 1270224., 1264608.,
      1276200., 1270512., 1282176., 1410561., 1423602., 1417122., 1430244.,
      1423683., 1436886., 1430244., 1443528., 1252944., 1264680., 1258704.,
      1270512., 1264464., 1276344., 1270224., 1282176., 1095381., 1105776.,
      1100358., 1110816., 1105335., 1115856., 1110312., 1120896., 937944.,
      946962.,  942156.,  951228.,  946368.,  955494.,  950580.,  959760.,
      787216.,  795520.,  790816.,  799168.,  794416.,  802816.,  798016.,
      806464.,  917504.,  927304.,  921648.,  931504.,  925792.,  935704.,
      929936.,  939904.,  1047360., 1058688., 1052032., 1063424., 1056704.,
      1068160., 1061376., 1072896., 1176720., 1189608., 1181904., 1194864.,
      1187088., 1200120., 1192272., 1205376., 1042880., 1054464., 1047424.,
      1059072., 1051968., 1063680., 1056512., 1068288., 909664.,  919912.,
      913584.,  923888.,  917504.,  927864.,  921424.,  931840.,  777136.,
      786016.,  780448.,  789376.,  783760.,  792736.,  787072.,  796096.,
      639296.,  647318.,  642068.,  650132.,  644840.,  652946.,  647612.,
      655760.,  743281.,  752738.,  746466.,  755972.,  749651.,  759206.,
      752836.,  762440.,  846384.,  857304.,  849968.,  860944.,  853552.,
      864584.,  857136.,  868224.,  948549.,  960960.,  952518.,  964992.,
      956487.,  969024.,  960456.,  973056.,  838432.,  849576.,  841904.,
      853104.,  845376.,  856632.,  848848.,  860160.,  729365.,  739214.,
      732354.,  742252.,  735343.,  745290.,  738332.,  748328.,  621404.,
      629930.,  623924.,  632492.,  626444.,  635054.,  628964.,  637616.,
      497748.,  505272.,  499800.,  507360.,  501852.,  509448.,  503904.,
      511536.,  576996.,  585858.,  579348.,  588252.,  581700.,  590646.,
      584052.,  593040.,  655056.,  665280.,  657696.,  667968.,  660336.,
      670656.,  662976.,  673344.,  731880.,  743490.,  734796.,  746460.,
      737712.,  749430.,  740628.,  752400.,  644784.,  655200.,  647328.,
      657792.,  649872.,  660384.,  652416.,  662976.,  559020.,  568218.,
      561204.,  570444.,  563388.,  572670.,  565572.,  574896.,  474636.,
      482592.,  476472.,  484464.,  478308.,  486336.,  480144.,  488208.};
  const std::array<int, 4> in_shape = {{1, 9, 9, 4}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, VALID1x9x9x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      4665.,  5034.,  4746.,  5124.,  4827.,  5214.,  4908.,  5304.,  4989.,
      5394.,  5070.,  5484.,  5151.,  5574.,  5232.,  5664.,  5313.,  5754.,
      5394.,  5844.,  5475.,  5934.,  5556.,  6024.,  5637.,  6114.,  5718.,
      6204.,  5799.,  6294.,  5880.,  6384.,  5961.,  6474.,  6042.,  6564.,
      6123.,  6654.,  6204.,  6744.,  6285.,  6834.,  6366.,  6924.,  6447.,
      7014.,  6528.,  7104.,  6609.,  7194.,  6690.,  7284.,  6771.,  7374.,
      6852.,  7464.,  7581.,  8274.,  7662.,  8364.,  7743.,  8454.,  7824.,
      8544.,  7905.,  8634.,  7986.,  8724.,  8067.,  8814.,  8148.,  8904.,
      8229.,  8994.,  8310.,  9084.,  8391.,  9174.,  8472.,  9264.,  8553.,
      9354.,  8634.,  9444.,  8715.,  9534.,  8796.,  9624.,  8877.,  9714.,
      8958.,  9804.,  9039.,  9894.,  9120.,  9984.,  9201.,  10074., 9282.,
      10164., 9363.,  10254., 9444.,  10344., 9525.,  10434., 9606.,  10524.,
      9687.,  10614., 9768.,  10704., 10497., 11514., 10578., 11604., 10659.,
      11694., 10740., 11784., 10821., 11874., 10902., 11964., 10983., 12054.,
      11064., 12144., 11145., 12234., 11226., 12324., 11307., 12414., 11388.,
      12504., 11469., 12594., 11550., 12684., 11631., 12774., 11712., 12864.,
      11793., 12954., 11874., 13044., 11955., 13134., 12036., 13224., 12117.,
      13314., 12198., 13404., 12279., 13494., 12360., 13584., 12441., 13674.,
      12522., 13764., 12603., 13854., 12684., 13944., 13413., 14754., 13494.,
      14844., 13575., 14934., 13656., 15024., 13737., 15114., 13818., 15204.,
      13899., 15294., 13980., 15384., 14061., 15474., 14142., 15564., 14223.,
      15654., 14304., 15744., 14385., 15834., 14466., 15924., 14547., 16014.,
      14628., 16104., 14709., 16194., 14790., 16284., 14871., 16374., 14952.,
      16464., 15033., 16554., 15114., 16644., 15195., 16734., 15276., 16824.,
      15357., 16914., 15438., 17004., 15519., 17094., 15600., 17184., 16329.,
      17994., 16410., 18084., 16491., 18174., 16572., 18264., 16653., 18354.,
      16734., 18444., 16815., 18534., 16896., 18624., 16977., 18714., 17058.,
      18804., 17139., 18894., 17220., 18984., 17301., 19074., 17382., 19164.,
      17463., 19254., 17544., 19344., 17625., 19434., 17706., 19524., 17787.,
      19614., 17868., 19704., 17949., 19794., 18030., 19884., 18111., 19974.,
      18192., 20064., 18273., 20154., 18354., 20244., 18435., 20334., 18516.,
      20424., 19245., 21234., 19326., 21324., 19407., 21414., 19488., 21504.,
      19569., 21594., 19650., 21684., 19731., 21774., 19812., 21864., 19893.,
      21954., 19974., 22044., 20055., 22134., 20136., 22224., 20217., 22314.,
      20298., 22404., 20379., 22494., 20460., 22584., 20541., 22674., 20622.,
      22764., 20703., 22854., 20784., 22944., 20865., 23034., 20946., 23124.,
      21027., 23214., 21108., 23304., 21189., 23394., 21270., 23484., 21351.,
      23574., 21432., 23664., 22161., 24474., 22242., 24564., 22323., 24654.,
      22404., 24744., 22485., 24834., 22566., 24924., 22647., 25014., 22728.,
      25104., 22809., 25194., 22890., 25284., 22971., 25374., 23052., 25464.,
      23133., 25554., 23214., 25644., 23295., 25734., 23376., 25824., 23457.,
      25914., 23538., 26004., 23619., 26094., 23700., 26184., 23781., 26274.,
      23862., 26364., 23943., 26454., 24024., 26544., 24105., 26634., 24186.,
      26724., 24267., 26814., 24348., 26904.};
  const std::array<int, 4> in_shape = {{1, 9, 9, 4}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, SAME1x9x9x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      941316.,  944952.,  948588.,  952224.,  949272.,  952944.,  956616.,
      960288.,  957228.,  960936.,  964644.,  968352.,  965184.,  968928.,
      972672.,  976416.,  1108842., 1113168., 1117494., 1121820., 1118040.,
      1122408., 1126776., 1131144., 1127238., 1131648., 1136058., 1140468.,
      1136436., 1140888., 1145340., 1149792., 1279152., 1284192., 1289232.,
      1294272., 1289568., 1294656., 1299744., 1304832., 1299984., 1305120.,
      1310256., 1315392., 1310400., 1315584., 1320768., 1325952., 1452150.,
      1457928., 1463706., 1469484., 1463760., 1469592., 1475424., 1481256.,
      1475370., 1481256., 1487142., 1493028., 1486980., 1492920., 1498860.,
      1504800., 1299888., 1305120., 1310352., 1315584., 1310112., 1315392.,
      1320672., 1325952., 1320336., 1325664., 1330992., 1336320., 1330560.,
      1335936., 1341312., 1346688., 1145130., 1149792., 1154454., 1159116.,
      1153992., 1158696., 1163400., 1168104., 1162854., 1167600., 1172346.,
      1177092., 1171716., 1176504., 1181292., 1186080., 987972.,  992040.,
      996108.,  1000176., 995496.,  999600.,  1003704., 1007808., 1003020.,
      1007160., 1011300., 1015440., 1010544., 1014720., 1018896., 1023072.,
      1234282., 1239280., 1244278., 1249276., 1242808., 1247848., 1252888.,
      1257928., 1251334., 1256416., 1261498., 1266580., 1259860., 1264984.,
      1270108., 1275232., 1448881., 1454810., 1460739., 1466668., 1458730.,
      1464708., 1470686., 1476664., 1468579., 1474606., 1480633., 1486660.,
      1478428., 1484504., 1490580., 1496656., 1665720., 1672608., 1679496.,
      1686384., 1676864., 1683808., 1690752., 1697696., 1688008., 1695008.,
      1702008., 1709008., 1699152., 1706208., 1713264., 1720320., 1884687.,
      1892562., 1900437., 1908312., 1897098., 1905036., 1912974., 1920912.,
      1909509., 1917510., 1925511., 1933512., 1921920., 1929984., 1938048.,
      1946112., 1681848., 1688960., 1696072., 1703184., 1692768., 1699936.,
      1707104., 1714272., 1703688., 1710912., 1718136., 1725360., 1714608.,
      1721888., 1729168., 1736448., 1477105., 1483426., 1489747., 1496068.,
      1486562., 1492932., 1499302., 1505672., 1496019., 1502438., 1508857.,
      1515276., 1505476., 1511944., 1518412., 1524880., 1270570., 1276072.,
      1281574., 1287076., 1278592., 1284136., 1289680., 1295224., 1286614.,
      1292200., 1297786., 1303372., 1294636., 1300264., 1305892., 1311520.,
      1545392., 1551968., 1558544., 1565120., 1554272., 1560896., 1567520.,
      1574144., 1563152., 1569824., 1576496., 1583168., 1572032., 1578752.,
      1585472., 1592192., 1809080., 1816864., 1824648., 1832432., 1819328.,
      1827168., 1835008., 1842848., 1829576., 1837472., 1845368., 1853264.,
      1839824., 1847776., 1855728., 1863680., 2074176., 2083200., 2092224.,
      2101248., 2085760., 2094848., 2103936., 2113024., 2097344., 2106496.,
      2115648., 2124800., 2108928., 2118144., 2127360., 2136576., 2340552.,
      2350848., 2361144., 2371440., 2353440., 2363808., 2374176., 2384544.,
      2366328., 2376768., 2387208., 2397648., 2379216., 2389728., 2400240.,
      2410752., 2083392., 2092672., 2101952., 2111232., 2094720., 2104064.,
      2113408., 2122752., 2106048., 2115456., 2124864., 2134272., 2117376.,
      2126848., 2136320., 2145792., 1825208., 1833440., 1841672., 1849904.,
      1835008., 1843296., 1851584., 1859872., 1844808., 1853152., 1861496.,
      1869840., 1854608., 1863008., 1871408., 1879808., 1566128., 1573280.,
      1580432., 1587584., 1574432., 1581632., 1588832., 1596032., 1582736.,
      1589984., 1597232., 1604480., 1591040., 1598336., 1605632., 1612928.,
      1866870., 1875240., 1883610., 1891980., 1875888., 1884312., 1892736.,
      1901160., 1884906., 1893384., 1901862., 1910340., 1893924., 1902456.,
      1910988., 1919520., 2180367., 2190258., 2200149., 2210040., 2190762.,
      2200716., 2210670., 2220624., 2201157., 2211174., 2221191., 2231208.,
      2211552., 2221632., 2231712., 2241792., 2494152., 2505600., 2517048.,
      2528496., 2505888., 2517408., 2528928., 2540448., 2517624., 2529216.,
      2540808., 2552400., 2529360., 2541024., 2552688., 2564352., 2808081.,
      2821122., 2834163., 2847204., 2821122., 2834244., 2847366., 2860488.,
      2834163., 2847366., 2860569., 2873772., 2847204., 2860488., 2873772.,
      2887056., 2494152., 2505888., 2517624., 2529360., 2505600., 2517408.,
      2529216., 2541024., 2517048., 2528928., 2540808., 2552688., 2528496.,
      2540448., 2552400., 2564352., 2180367., 2190762., 2201157., 2211552.,
      2190258., 2200716., 2211174., 2221632., 2200149., 2210670., 2221191.,
      2231712., 2210040., 2220624., 2231208., 2241792., 1866870., 1875888.,
      1884906., 1893924., 1875240., 1884312., 1893384., 1902456., 1883610.,
      1892736., 1901862., 1910988., 1891980., 1901160., 1910340., 1919520.,
      1566128., 1574432., 1582736., 1591040., 1573280., 1581632., 1589984.,
      1598336., 1580432., 1588832., 1597232., 1605632., 1587584., 1596032.,
      1604480., 1612928., 1825208., 1835008., 1844808., 1854608., 1833440.,
      1843296., 1853152., 1863008., 1841672., 1851584., 1861496., 1871408.,
      1849904., 1859872., 1869840., 1879808., 2083392., 2094720., 2106048.,
      2117376., 2092672., 2104064., 2115456., 2126848., 2101952., 2113408.,
      2124864., 2136320., 2111232., 2122752., 2134272., 2145792., 2340552.,
      2353440., 2366328., 2379216., 2350848., 2363808., 2376768., 2389728.,
      2361144., 2374176., 2387208., 2400240., 2371440., 2384544., 2397648.,
      2410752., 2074176., 2085760., 2097344., 2108928., 2083200., 2094848.,
      2106496., 2118144., 2092224., 2103936., 2115648., 2127360., 2101248.,
      2113024., 2124800., 2136576., 1809080., 1819328., 1829576., 1839824.,
      1816864., 1827168., 1837472., 1847776., 1824648., 1835008., 1845368.,
      1855728., 1832432., 1842848., 1853264., 1863680., 1545392., 1554272.,
      1563152., 1572032., 1551968., 1560896., 1569824., 1578752., 1558544.,
      1567520., 1576496., 1585472., 1565120., 1574144., 1583168., 1592192.,
      1270570., 1278592., 1286614., 1294636., 1276072., 1284136., 1292200.,
      1300264., 1281574., 1289680., 1297786., 1305892., 1287076., 1295224.,
      1303372., 1311520., 1477105., 1486562., 1496019., 1505476., 1483426.,
      1492932., 1502438., 1511944., 1489747., 1499302., 1508857., 1518412.,
      1496068., 1505672., 1515276., 1524880., 1681848., 1692768., 1703688.,
      1714608., 1688960., 1699936., 1710912., 1721888., 1696072., 1707104.,
      1718136., 1729168., 1703184., 1714272., 1725360., 1736448., 1884687.,
      1897098., 1909509., 1921920., 1892562., 1905036., 1917510., 1929984.,
      1900437., 1912974., 1925511., 1938048., 1908312., 1920912., 1933512.,
      1946112., 1665720., 1676864., 1688008., 1699152., 1672608., 1683808.,
      1695008., 1706208., 1679496., 1690752., 1702008., 1713264., 1686384.,
      1697696., 1709008., 1720320., 1448881., 1458730., 1468579., 1478428.,
      1454810., 1464708., 1474606., 1484504., 1460739., 1470686., 1480633.,
      1490580., 1466668., 1476664., 1486660., 1496656., 1234282., 1242808.,
      1251334., 1259860., 1239280., 1247848., 1256416., 1264984., 1244278.,
      1252888., 1261498., 1270108., 1249276., 1257928., 1266580., 1275232.,
      987972.,  995496.,  1003020., 1010544., 992040.,  999600.,  1007160.,
      1014720., 996108.,  1003704., 1011300., 1018896., 1000176., 1007808.,
      1015440., 1023072., 1145130., 1153992., 1162854., 1171716., 1149792.,
      1158696., 1167600., 1176504., 1154454., 1163400., 1172346., 1181292.,
      1159116., 1168104., 1177092., 1186080., 1299888., 1310112., 1320336.,
      1330560., 1305120., 1315392., 1325664., 1335936., 1310352., 1320672.,
      1330992., 1341312., 1315584., 1325952., 1336320., 1346688., 1452150.,
      1463760., 1475370., 1486980., 1457928., 1469592., 1481256., 1492920.,
      1463706., 1475424., 1487142., 1498860., 1469484., 1481256., 1493028.,
      1504800., 1279152., 1289568., 1299984., 1310400., 1284192., 1294656.,
      1305120., 1315584., 1289232., 1299744., 1310256., 1320768., 1294272.,
      1304832., 1315392., 1325952., 1108842., 1118040., 1127238., 1136436.,
      1113168., 1122408., 1131648., 1140888., 1117494., 1126776., 1136058.,
      1145340., 1121820., 1131144., 1140468., 1149792., 941316.,  949272.,
      957228.,  965184.,  944952.,  952944.,  960936.,  968928.,  948588.,
      956616.,  964644.,  972672.,  952224.,  960288.,  968352.,  976416.};
  const std::array<int, 4> in_shape = {{1, 9, 9, 4}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, VALID1x9x9x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      8961.,  9330.,  9699.,  10068., 9114.,  9492.,  9870.,  10248., 9267.,
      9654.,  10041., 10428., 9420.,  9816.,  10212., 10608., 9573.,  9978.,
      10383., 10788., 9726.,  10140., 10554., 10968., 9879.,  10302., 10725.,
      11148., 10032., 10464., 10896., 11328., 10185., 10626., 11067., 11508.,
      10338., 10788., 11238., 11688., 10491., 10950., 11409., 11868., 10644.,
      11112., 11580., 12048., 10797., 11274., 11751., 12228., 10950., 11436.,
      11922., 12408., 11103., 11598., 12093., 12588., 11256., 11760., 12264.,
      12768., 11409., 11922., 12435., 12948., 11562., 12084., 12606., 13128.,
      11715., 12246., 12777., 13308., 11868., 12408., 12948., 13488., 12021.,
      12570., 13119., 13668., 12174., 12732., 13290., 13848., 12327., 12894.,
      13461., 14028., 12480., 13056., 13632., 14208., 12633., 13218., 13803.,
      14388., 12786., 13380., 13974., 14568., 12939., 13542., 14145., 14748.,
      13092., 13704., 14316., 14928., 14469., 15162., 15855., 16548., 14622.,
      15324., 16026., 16728., 14775., 15486., 16197., 16908., 14928., 15648.,
      16368., 17088., 15081., 15810., 16539., 17268., 15234., 15972., 16710.,
      17448., 15387., 16134., 16881., 17628., 15540., 16296., 17052., 17808.,
      15693., 16458., 17223., 17988., 15846., 16620., 17394., 18168., 15999.,
      16782., 17565., 18348., 16152., 16944., 17736., 18528., 16305., 17106.,
      17907., 18708., 16458., 17268., 18078., 18888., 16611., 17430., 18249.,
      19068., 16764., 17592., 18420., 19248., 16917., 17754., 18591., 19428.,
      17070., 17916., 18762., 19608., 17223., 18078., 18933., 19788., 17376.,
      18240., 19104., 19968., 17529., 18402., 19275., 20148., 17682., 18564.,
      19446., 20328., 17835., 18726., 19617., 20508., 17988., 18888., 19788.,
      20688., 18141., 19050., 19959., 20868., 18294., 19212., 20130., 21048.,
      18447., 19374., 20301., 21228., 18600., 19536., 20472., 21408., 19977.,
      20994., 22011., 23028., 20130., 21156., 22182., 23208., 20283., 21318.,
      22353., 23388., 20436., 21480., 22524., 23568., 20589., 21642., 22695.,
      23748., 20742., 21804., 22866., 23928., 20895., 21966., 23037., 24108.,
      21048., 22128., 23208., 24288., 21201., 22290., 23379., 24468., 21354.,
      22452., 23550., 24648., 21507., 22614., 23721., 24828., 21660., 22776.,
      23892., 25008., 21813., 22938., 24063., 25188., 21966., 23100., 24234.,
      25368., 22119., 23262., 24405., 25548., 22272., 23424., 24576., 25728.,
      22425., 23586., 24747., 25908., 22578., 23748., 24918., 26088., 22731.,
      23910., 25089., 26268., 22884., 24072., 25260., 26448., 23037., 24234.,
      25431., 26628., 23190., 24396., 25602., 26808., 23343., 24558., 25773.,
      26988., 23496., 24720., 25944., 27168., 23649., 24882., 26115., 27348.,
      23802., 25044., 26286., 27528., 23955., 25206., 26457., 27708., 24108.,
      25368., 26628., 27888., 25485., 26826., 28167., 29508., 25638., 26988.,
      28338., 29688., 25791., 27150., 28509., 29868., 25944., 27312., 28680.,
      30048., 26097., 27474., 28851., 30228., 26250., 27636., 29022., 30408.,
      26403., 27798., 29193., 30588., 26556., 27960., 29364., 30768., 26709.,
      28122., 29535., 30948., 26862., 28284., 29706., 31128., 27015., 28446.,
      29877., 31308., 27168., 28608., 30048., 31488., 27321., 28770., 30219.,
      31668., 27474., 28932., 30390., 31848., 27627., 29094., 30561., 32028.,
      27780., 29256., 30732., 32208., 27933., 29418., 30903., 32388., 28086.,
      29580., 31074., 32568., 28239., 29742., 31245., 32748., 28392., 29904.,
      31416., 32928., 28545., 30066., 31587., 33108., 28698., 30228., 31758.,
      33288., 28851., 30390., 31929., 33468., 29004., 30552., 32100., 33648.,
      29157., 30714., 32271., 33828., 29310., 30876., 32442., 34008., 29463.,
      31038., 32613., 34188., 29616., 31200., 32784., 34368., 30993., 32658.,
      34323., 35988., 31146., 32820., 34494., 36168., 31299., 32982., 34665.,
      36348., 31452., 33144., 34836., 36528., 31605., 33306., 35007., 36708.,
      31758., 33468., 35178., 36888., 31911., 33630., 35349., 37068., 32064.,
      33792., 35520., 37248., 32217., 33954., 35691., 37428., 32370., 34116.,
      35862., 37608., 32523., 34278., 36033., 37788., 32676., 34440., 36204.,
      37968., 32829., 34602., 36375., 38148., 32982., 34764., 36546., 38328.,
      33135., 34926., 36717., 38508., 33288., 35088., 36888., 38688., 33441.,
      35250., 37059., 38868., 33594., 35412., 37230., 39048., 33747., 35574.,
      37401., 39228., 33900., 35736., 37572., 39408., 34053., 35898., 37743.,
      39588., 34206., 36060., 37914., 39768., 34359., 36222., 38085., 39948.,
      34512., 36384., 38256., 40128., 34665., 36546., 38427., 40308., 34818.,
      36708., 38598., 40488., 34971., 36870., 38769., 40668., 35124., 37032.,
      38940., 40848., 36501., 38490., 40479., 42468., 36654., 38652., 40650.,
      42648., 36807., 38814., 40821., 42828., 36960., 38976., 40992., 43008.,
      37113., 39138., 41163., 43188., 37266., 39300., 41334., 43368., 37419.,
      39462., 41505., 43548., 37572., 39624., 41676., 43728., 37725., 39786.,
      41847., 43908., 37878., 39948., 42018., 44088., 38031., 40110., 42189.,
      44268., 38184., 40272., 42360., 44448., 38337., 40434., 42531., 44628.,
      38490., 40596., 42702., 44808., 38643., 40758., 42873., 44988., 38796.,
      40920., 43044., 45168., 38949., 41082., 43215., 45348., 39102., 41244.,
      43386., 45528., 39255., 41406., 43557., 45708., 39408., 41568., 43728.,
      45888., 39561., 41730., 43899., 46068., 39714., 41892., 44070., 46248.,
      39867., 42054., 44241., 46428., 40020., 42216., 44412., 46608., 40173.,
      42378., 44583., 46788., 40326., 42540., 44754., 46968., 40479., 42702.,
      44925., 47148., 40632., 42864., 45096., 47328., 42009., 44322., 46635.,
      48948., 42162., 44484., 46806., 49128., 42315., 44646., 46977., 49308.,
      42468., 44808., 47148., 49488., 42621., 44970., 47319., 49668., 42774.,
      45132., 47490., 49848., 42927., 45294., 47661., 50028., 43080., 45456.,
      47832., 50208., 43233., 45618., 48003., 50388., 43386., 45780., 48174.,
      50568., 43539., 45942., 48345., 50748., 43692., 46104., 48516., 50928.,
      43845., 46266., 48687., 51108., 43998., 46428., 48858., 51288., 44151.,
      46590., 49029., 51468., 44304., 46752., 49200., 51648., 44457., 46914.,
      49371., 51828., 44610., 47076., 49542., 52008., 44763., 47238., 49713.,
      52188., 44916., 47400., 49884., 52368., 45069., 47562., 50055., 52548.,
      45222., 47724., 50226., 52728., 45375., 47886., 50397., 52908., 45528.,
      48048., 50568., 53088., 45681., 48210., 50739., 53268., 45834., 48372.,
      50910., 53448., 45987., 48534., 51081., 53628., 46140., 48696., 51252.,
      53808.};
  const std::array<int, 4> in_shape = {{1, 9, 9, 4}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, SAME1x9x10x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      87934.,  101336., 114930., 128710., 116550., 104216., 91714.,
      114758., 131852., 149100., 166495., 150360., 134092., 117698.,
      143192., 164128., 185160., 206280., 185880., 165408., 144872.,
      172536., 197364., 222210., 247065., 222210., 197364., 172536.,
      144872., 165408., 185880., 206280., 185160., 164128., 143192.,
      117698., 134092., 150360., 166495., 149100., 131852., 114758.,
      91714.,  104216., 116550., 128710., 114930., 101336., 87934.};
  const std::array<int, 4> in_shape = {{1, 9, 10, 1}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, VALID1x9x10x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1310., 1388., 1466., 1544., 1622., 1700., 1778., 2090., 2168., 2246.,
      2324., 2402., 2480., 2558., 2870., 2948., 3026., 3104., 3182., 3260.,
      3338., 3650., 3728., 3806., 3884., 3962., 4040., 4118., 4430., 4508.,
      4586., 4664., 4742., 4820., 4898., 5210., 5288., 5366., 5444., 5522.,
      5600., 5678., 5990., 6068., 6146., 6224., 6302., 6380., 6458.};
  const std::array<int, 4> in_shape = {{1, 9, 10, 1}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, SAME1x9x10x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      174650., 175868., 201256., 202672., 228240., 229860., 255590., 257420.,
      231426., 233100., 206920., 208432., 182084., 183428., 227850., 229516.,
      261772., 263704., 295995., 298200., 330505., 332990., 298452., 300720.,
      266140., 268184., 233583., 235396., 284200., 286384., 325728., 328256.,
      367440., 370320., 409320., 412560., 368808., 371760., 328160., 330816.,
      287392., 289744., 342300., 345072., 391524., 394728., 440775., 444420.,
      490035., 494130., 440694., 444420., 391380., 394728., 342111., 345072.,
      287000., 289744., 327648., 330816., 368160., 371760., 408520., 412560.,
      366648., 370320., 324960., 328256., 283472., 286384., 232750., 235396.,
      265132., 268184., 297255., 300720., 329105., 332990., 294672., 298200.,
      260540., 263704., 226723., 229516., 180950., 183428., 205576., 208432.,
      229860., 233100., 253790., 257420., 226566., 229860., 199720., 202672.,
      173264., 175868.};
  const std::array<int, 4> in_shape = {{1, 9, 10, 1}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, VALID1x9x10x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      2470.,  2620.,  2614.,  2776.,  2758.,  2932.,  2902.,  3088.,  3046.,
      3244.,  3190.,  3400.,  3334.,  3556.,  3910.,  4180.,  4054.,  4336.,
      4198.,  4492.,  4342.,  4648.,  4486.,  4804.,  4630.,  4960.,  4774.,
      5116.,  5350.,  5740.,  5494.,  5896.,  5638.,  6052.,  5782.,  6208.,
      5926.,  6364.,  6070.,  6520.,  6214.,  6676.,  6790.,  7300.,  6934.,
      7456.,  7078.,  7612.,  7222.,  7768.,  7366.,  7924.,  7510.,  8080.,
      7654.,  8236.,  8230.,  8860.,  8374.,  9016.,  8518.,  9172.,  8662.,
      9328.,  8806.,  9484.,  8950.,  9640.,  9094.,  9796.,  9670.,  10420.,
      9814.,  10576., 9958.,  10732., 10102., 10888., 10246., 11044., 10390.,
      11200., 10534., 11356., 11110., 11980., 11254., 12136., 11398., 12292.,
      11542., 12448., 11686., 12604., 11830., 12760., 11974., 12916.};
  const std::array<int, 4> in_shape = {{1, 9, 10, 1}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, SAME1x9x10x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      348082., 349300., 350518., 351736., 401096., 402512., 403928., 405344.,
      454860., 456480., 458100., 459720., 509350., 511180., 513010., 514840.,
      461178., 462852., 464526., 466200., 412328., 413840., 415352., 416864.,
      362824., 364168., 365512., 366856., 454034., 455700., 457366., 459032.,
      521612., 523544., 525476., 527408., 589785., 591990., 594195., 596400.,
      658525., 661010., 663495., 665980., 594636., 596904., 599172., 601440.,
      530236., 532280., 534324., 536368., 465353., 467166., 468979., 470792.,
      566216., 568400., 570584., 572768., 648928., 651456., 653984., 656512.,
      732000., 734880., 737760., 740640., 815400., 818640., 821880., 825120.,
      734664., 737616., 740568., 743520., 653664., 656320., 658976., 661632.,
      572432., 574784., 577136., 579488., 681828., 684600., 687372., 690144.,
      779844., 783048., 786252., 789456., 877905., 881550., 885195., 888840.,
      975975., 980070., 984165., 988260., 877662., 881388., 885114., 888840.,
      779412., 782760., 786108., 789456., 681261., 684222., 687183., 690144.,
      571256., 574000., 576744., 579488., 652128., 655296., 658464., 661632.,
      732720., 736320., 739920., 743520., 813000., 817040., 821080., 825120.,
      729624., 733296., 736968., 740640., 646624., 649920., 653216., 656512.,
      564032., 566944., 569856., 572768., 462854., 465500., 468146., 470792.,
      527212., 530264., 533316., 536368., 591045., 594510., 597975., 601440.,
      654325., 658210., 662095., 665980., 585816., 589344., 592872., 596400.,
      517916., 521080., 524244., 527408., 450653., 453446., 456239., 459032.,
      359422., 361900., 364378., 366856., 408296., 411152., 414008., 416864.,
      456480., 459720., 462960., 466200., 503950., 507580., 511210., 514840.,
      449838., 453132., 456426., 459720., 396488., 399440., 402392., 405344.,
      343924., 346528., 349132., 351736.};
  const std::array<int, 4> in_shape = {{1, 9, 10, 1}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, VALID1x9x10x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      4790.,  4940.,  5090.,  5240.,  5066.,  5228.,  5390.,  5552.,  5342.,
      5516.,  5690.,  5864.,  5618.,  5804.,  5990.,  6176.,  5894.,  6092.,
      6290.,  6488.,  6170.,  6380.,  6590.,  6800.,  6446.,  6668.,  6890.,
      7112.,  7550.,  7820.,  8090.,  8360.,  7826.,  8108.,  8390.,  8672.,
      8102.,  8396.,  8690.,  8984.,  8378.,  8684.,  8990.,  9296.,  8654.,
      8972.,  9290.,  9608.,  8930.,  9260.,  9590.,  9920.,  9206.,  9548.,
      9890.,  10232., 10310., 10700., 11090., 11480., 10586., 10988., 11390.,
      11792., 10862., 11276., 11690., 12104., 11138., 11564., 11990., 12416.,
      11414., 11852., 12290., 12728., 11690., 12140., 12590., 13040., 11966.,
      12428., 12890., 13352., 13070., 13580., 14090., 14600., 13346., 13868.,
      14390., 14912., 13622., 14156., 14690., 15224., 13898., 14444., 14990.,
      15536., 14174., 14732., 15290., 15848., 14450., 15020., 15590., 16160.,
      14726., 15308., 15890., 16472., 15830., 16460., 17090., 17720., 16106.,
      16748., 17390., 18032., 16382., 17036., 17690., 18344., 16658., 17324.,
      17990., 18656., 16934., 17612., 18290., 18968., 17210., 17900., 18590.,
      19280., 17486., 18188., 18890., 19592., 18590., 19340., 20090., 20840.,
      18866., 19628., 20390., 21152., 19142., 19916., 20690., 21464., 19418.,
      20204., 20990., 21776., 19694., 20492., 21290., 22088., 19970., 20780.,
      21590., 22400., 20246., 21068., 21890., 22712., 21350., 22220., 23090.,
      23960., 21626., 22508., 23390., 24272., 21902., 22796., 23690., 24584.,
      22178., 23084., 23990., 24896., 22454., 23372., 24290., 25208., 22730.,
      23660., 24590., 25520., 23006., 23948., 24890., 25832.};
  const std::array<int, 4> in_shape = {{1, 9, 10, 1}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, SAME1x9x10x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      173264., 175868., 199720., 202672., 226566., 229860., 253790., 257420.,
      229860., 233100., 205576., 208432., 180950., 183428., 226723., 229516.,
      260540., 263704., 294672., 298200., 329105., 332990., 297255., 300720.,
      265132., 268184., 232750., 235396., 283472., 286384., 324960., 328256.,
      366648., 370320., 408520., 412560., 368160., 371760., 327648., 330816.,
      287000., 289744., 342111., 345072., 391380., 394728., 440694., 444420.,
      490035., 494130., 440775., 444420., 391524., 394728., 342300., 345072.,
      287392., 289744., 328160., 330816., 368808., 371760., 409320., 412560.,
      367440., 370320., 325728., 328256., 284200., 286384., 233583., 235396.,
      266140., 268184., 298452., 300720., 330505., 332990., 295995., 298200.,
      261772., 263704., 227850., 229516., 182084., 183428., 206920., 208432.,
      231426., 233100., 255590., 257420., 228240., 229860., 201256., 202672.,
      174650., 175868.};
  const std::array<int, 4> in_shape = {{1, 9, 10, 2}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, VALID1x9x10x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      2542.,  2620.,  2698.,  2776.,  2854.,  2932.,  3010.,  3088.,  3166.,
      3244.,  3322.,  3400.,  3478.,  3556.,  4102.,  4180.,  4258.,  4336.,
      4414.,  4492.,  4570.,  4648.,  4726.,  4804.,  4882.,  4960.,  5038.,
      5116.,  5662.,  5740.,  5818.,  5896.,  5974.,  6052.,  6130.,  6208.,
      6286.,  6364.,  6442.,  6520.,  6598.,  6676.,  7222.,  7300.,  7378.,
      7456.,  7534.,  7612.,  7690.,  7768.,  7846.,  7924.,  8002.,  8080.,
      8158.,  8236.,  8782.,  8860.,  8938.,  9016.,  9094.,  9172.,  9250.,
      9328.,  9406.,  9484.,  9562.,  9640.,  9718.,  9796.,  10342., 10420.,
      10498., 10576., 10654., 10732., 10810., 10888., 10966., 11044., 11122.,
      11200., 11278., 11356., 11902., 11980., 12058., 12136., 12214., 12292.,
      12370., 12448., 12526., 12604., 12682., 12760., 12838., 12916.};
  const std::array<int, 4> in_shape = {{1, 9, 10, 2}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, SAME1x9x10x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      344134., 346528., 349300., 351736., 396656., 399440., 402512., 405344.,
      449946., 453132., 456480., 459720., 503980., 507580., 511180., 514840.,
      456426., 459720., 462852., 466200., 408176., 411152., 413840., 416864.,
      359254., 361900., 364168., 366856., 450163., 453446., 455700., 459032.,
      517272., 521080., 523544., 527408., 584997., 589344., 591990., 596400.,
      653310., 658210., 661010., 665980., 590037., 594510., 596904., 601440.,
      526232., 530264., 532280., 536368., 461923., 465500., 467166., 470792.,
      562632., 566944., 568400., 572768., 644928., 649920., 651456., 656512.,
      727608., 733296., 734880., 740640., 810640., 817040., 818640., 825120.,
      730488., 736320., 737616., 743520., 650048., 655296., 656320., 661632.,
      569352., 574000., 574784., 579488., 678741., 684222., 684600., 690144.,
      776424., 782760., 783048., 789456., 874179., 881388., 881550., 888840.,
      971970., 980070., 980070., 988260., 874179., 881550., 881388., 888840.,
      776424., 783048., 782760., 789456., 678741., 684600., 684222., 690144.,
      569352., 574784., 574000., 579488., 650048., 656320., 655296., 661632.,
      730488., 737616., 736320., 743520., 810640., 818640., 817040., 825120.,
      727608., 734880., 733296., 740640., 644928., 651456., 649920., 656512.,
      562632., 568400., 566944., 572768., 461923., 467166., 465500., 470792.,
      526232., 532280., 530264., 536368., 590037., 596904., 594510., 601440.,
      653310., 661010., 658210., 665980., 584997., 591990., 589344., 596400.,
      517272., 523544., 521080., 527408., 450163., 455700., 453446., 459032.,
      359254., 364168., 361900., 366856., 408176., 413840., 411152., 416864.,
      456426., 462852., 459720., 466200., 503980., 511180., 507580., 514840.,
      449946., 456480., 453132., 459720., 396656., 402512., 399440., 405344.,
      344134., 349300., 346528., 351736.};
  const std::array<int, 4> in_shape = {{1, 9, 10, 2}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, VALID1x9x10x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      4796.,  5084.,  4940.,  5240.,  5084.,  5396.,  5228.,  5552.,  5372.,
      5708.,  5516.,  5864.,  5660.,  6020.,  5804.,  6176.,  5948.,  6332.,
      6092.,  6488.,  6236.,  6644.,  6380.,  6800.,  6524.,  6956.,  6668.,
      7112.,  7676.,  8204.,  7820.,  8360.,  7964.,  8516.,  8108.,  8672.,
      8252.,  8828.,  8396.,  8984.,  8540.,  9140.,  8684.,  9296.,  8828.,
      9452.,  8972.,  9608.,  9116.,  9764.,  9260.,  9920.,  9404.,  10076.,
      9548.,  10232., 10556., 11324., 10700., 11480., 10844., 11636., 10988.,
      11792., 11132., 11948., 11276., 12104., 11420., 12260., 11564., 12416.,
      11708., 12572., 11852., 12728., 11996., 12884., 12140., 13040., 12284.,
      13196., 12428., 13352., 13436., 14444., 13580., 14600., 13724., 14756.,
      13868., 14912., 14012., 15068., 14156., 15224., 14300., 15380., 14444.,
      15536., 14588., 15692., 14732., 15848., 14876., 16004., 15020., 16160.,
      15164., 16316., 15308., 16472., 16316., 17564., 16460., 17720., 16604.,
      17876., 16748., 18032., 16892., 18188., 17036., 18344., 17180., 18500.,
      17324., 18656., 17468., 18812., 17612., 18968., 17756., 19124., 17900.,
      19280., 18044., 19436., 18188., 19592., 19196., 20684., 19340., 20840.,
      19484., 20996., 19628., 21152., 19772., 21308., 19916., 21464., 20060.,
      21620., 20204., 21776., 20348., 21932., 20492., 22088., 20636., 22244.,
      20780., 22400., 20924., 22556., 21068., 22712., 22076., 23804., 22220.,
      23960., 22364., 24116., 22508., 24272., 22652., 24428., 22796., 24584.,
      22940., 24740., 23084., 24896., 23228., 25052., 23372., 25208., 23516.,
      25364., 23660., 25520., 23804., 25676., 23948., 25832.};
  const std::array<int, 4> in_shape = {{1, 9, 10, 2}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, SAME1x9x10x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      685874.,  688268.,  690662.,  693056.,  696164.,  698600.,  701036.,
      703472.,  790528.,  793312.,  796096.,  798880.,  802192.,  805024.,
      807856.,  810688.,  896706.,  899892.,  903078.,  906264.,  909720.,
      912960.,  916200.,  919440.,  1004360., 1007960., 1011560., 1015160.,
      1018700., 1022360., 1026020., 1029680., 909558.,  912852.,  916146.,
      919440.,  922356.,  925704.,  929052.,  932400.,  813376.,  816352.,
      819328.,  822304.,  824656.,  827680.,  830704.,  833728.,  715862.,
      718508.,  721154.,  723800.,  725648.,  728336.,  731024.,  733712.,
      897043.,  900326.,  903609.,  906892.,  908068.,  911400.,  914732.,
      918064.,  1030736., 1034544., 1038352., 1042160., 1043224., 1047088.,
      1050952., 1054816., 1165647., 1169994., 1174341., 1178688., 1179570.,
      1183980., 1188390., 1192800., 1301720., 1306620., 1311520., 1316420.,
      1317050., 1322020., 1326990., 1331960., 1175601., 1180074., 1184547.,
      1189020., 1189272., 1193808., 1198344., 1202880., 1048432., 1052464.,
      1056496., 1060528., 1060472., 1064560., 1068648., 1072736., 920269.,
      923846.,  927423.,  931000.,  930706.,  934332.,  937958.,  941584.,
      1120952., 1125264., 1129576., 1133888., 1132432., 1136800., 1141168.,
      1145536., 1284864., 1289856., 1294848., 1299840., 1297856., 1302912.,
      1307968., 1313024., 1449528., 1455216., 1460904., 1466592., 1464000.,
      1469760., 1475520., 1481280., 1614880., 1621280., 1627680., 1634080.,
      1630800., 1637280., 1643760., 1650240., 1455144., 1460976., 1466808.,
      1472640., 1469328., 1475232., 1481136., 1487040., 1294848., 1300096.,
      1305344., 1310592., 1307328., 1312640., 1317952., 1323264., 1134056.,
      1138704., 1143352., 1148000., 1144864., 1149568., 1154272., 1158976.,
      1352001., 1357482., 1362963., 1368444., 1363656., 1369200., 1374744.,
      1380288., 1546512., 1552848., 1559184., 1565520., 1559688., 1566096.,
      1572504., 1578912., 1741149., 1748358., 1755567., 1762776., 1755810.,
      1763100., 1770390., 1777680., 1935840., 1943940., 1952040., 1960140.,
      1951950., 1960140., 1968330., 1976520., 1740987., 1748358., 1755729.,
      1763100., 1755324., 1762776., 1770228., 1777680., 1546224., 1552848.,
      1559472., 1566096., 1558824., 1565520., 1572216., 1578912., 1351623.,
      1357482., 1363341., 1369200., 1362522., 1368444., 1374366., 1380288.,
      1133272., 1138704., 1144136., 1149568., 1142512., 1148000., 1153488.,
      1158976., 1293824., 1300096., 1306368., 1312640., 1304256., 1310592.,
      1316928., 1323264., 1453848., 1460976., 1468104., 1475232., 1465440.,
      1472640., 1479840., 1487040., 1613280., 1621280., 1629280., 1637280.,
      1626000., 1634080., 1642160., 1650240., 1447944., 1455216., 1462488.,
      1469760., 1459248., 1466592., 1473936., 1481280., 1283328., 1289856.,
      1296384., 1302912., 1293248., 1299840., 1306432., 1313024., 1119496.,
      1125264., 1131032., 1136800., 1128064., 1133888., 1139712., 1145536.,
      918603.,  923846.,  929089.,  934332.,  925708.,  931000.,  936292.,
      941584.,  1046416., 1052464., 1058512., 1064560., 1054424., 1060528.,
      1066632., 1072736., 1173207., 1180074., 1186941., 1193808., 1182090.,
      1189020., 1195950., 1202880., 1298920., 1306620., 1314320., 1322020.,
      1308650., 1316420., 1324190., 1331960., 1163001., 1169994., 1176987.,
      1183980., 1171632., 1178688., 1185744., 1192800., 1028272., 1034544.,
      1040816., 1047088., 1035832., 1042160., 1048488., 1054816., 894789.,
      900326.,  905863.,  911400.,  901306.,  906892.,  912478.,  918064.,
      713594.,  718508.,  723422.,  728336.,  718844.,  723800.,  728756.,
      733712.,  810688.,  816352.,  822016.,  827680.,  816592.,  822304.,
      828016.,  833728.,  906426.,  912852.,  919278.,  925704.,  912960.,
      919440.,  925920.,  932400.,  1000760., 1007960., 1015160., 1022360.,
      1007900., 1015160., 1022420., 1029680., 893358.,  899892.,  906426.,
      912960.,  899676.,  906264.,  912852.,  919440.,  787456.,  793312.,
      799168.,  805024.,  792976.,  798880.,  804784.,  810688.,  683102.,
      688268.,  693434.,  698600.,  687848.,  693056.,  698264.,  703472.};
  const std::array<int, 4> in_shape = {{1, 9, 10, 2}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, VALID1x9x10x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      9304.,  9592.,  9880.,  10168., 9580.,  9880.,  10180., 10480., 9856.,
      10168., 10480., 10792., 10132., 10456., 10780., 11104., 10408., 10744.,
      11080., 11416., 10684., 11032., 11380., 11728., 10960., 11320., 11680.,
      12040., 11236., 11608., 11980., 12352., 11512., 11896., 12280., 12664.,
      11788., 12184., 12580., 12976., 12064., 12472., 12880., 13288., 12340.,
      12760., 13180., 13600., 12616., 13048., 13480., 13912., 12892., 13336.,
      13780., 14224., 14824., 15352., 15880., 16408., 15100., 15640., 16180.,
      16720., 15376., 15928., 16480., 17032., 15652., 16216., 16780., 17344.,
      15928., 16504., 17080., 17656., 16204., 16792., 17380., 17968., 16480.,
      17080., 17680., 18280., 16756., 17368., 17980., 18592., 17032., 17656.,
      18280., 18904., 17308., 17944., 18580., 19216., 17584., 18232., 18880.,
      19528., 17860., 18520., 19180., 19840., 18136., 18808., 19480., 20152.,
      18412., 19096., 19780., 20464., 20344., 21112., 21880., 22648., 20620.,
      21400., 22180., 22960., 20896., 21688., 22480., 23272., 21172., 21976.,
      22780., 23584., 21448., 22264., 23080., 23896., 21724., 22552., 23380.,
      24208., 22000., 22840., 23680., 24520., 22276., 23128., 23980., 24832.,
      22552., 23416., 24280., 25144., 22828., 23704., 24580., 25456., 23104.,
      23992., 24880., 25768., 23380., 24280., 25180., 26080., 23656., 24568.,
      25480., 26392., 23932., 24856., 25780., 26704., 25864., 26872., 27880.,
      28888., 26140., 27160., 28180., 29200., 26416., 27448., 28480., 29512.,
      26692., 27736., 28780., 29824., 26968., 28024., 29080., 30136., 27244.,
      28312., 29380., 30448., 27520., 28600., 29680., 30760., 27796., 28888.,
      29980., 31072., 28072., 29176., 30280., 31384., 28348., 29464., 30580.,
      31696., 28624., 29752., 30880., 32008., 28900., 30040., 31180., 32320.,
      29176., 30328., 31480., 32632., 29452., 30616., 31780., 32944., 31384.,
      32632., 33880., 35128., 31660., 32920., 34180., 35440., 31936., 33208.,
      34480., 35752., 32212., 33496., 34780., 36064., 32488., 33784., 35080.,
      36376., 32764., 34072., 35380., 36688., 33040., 34360., 35680., 37000.,
      33316., 34648., 35980., 37312., 33592., 34936., 36280., 37624., 33868.,
      35224., 36580., 37936., 34144., 35512., 36880., 38248., 34420., 35800.,
      37180., 38560., 34696., 36088., 37480., 38872., 34972., 36376., 37780.,
      39184., 36904., 38392., 39880., 41368., 37180., 38680., 40180., 41680.,
      37456., 38968., 40480., 41992., 37732., 39256., 40780., 42304., 38008.,
      39544., 41080., 42616., 38284., 39832., 41380., 42928., 38560., 40120.,
      41680., 43240., 38836., 40408., 41980., 43552., 39112., 40696., 42280.,
      43864., 39388., 40984., 42580., 44176., 39664., 41272., 42880., 44488.,
      39940., 41560., 43180., 44800., 40216., 41848., 43480., 45112., 40492.,
      42136., 43780., 45424., 42424., 44152., 45880., 47608., 42700., 44440.,
      46180., 47920., 42976., 44728., 46480., 48232., 43252., 45016., 46780.,
      48544., 43528., 45304., 47080., 48856., 43804., 45592., 47380., 49168.,
      44080., 45880., 47680., 49480., 44356., 46168., 47980., 49792., 44632.,
      46456., 48280., 50104., 44908., 46744., 48580., 50416., 45184., 47032.,
      48880., 50728., 45460., 47320., 49180., 51040., 45736., 47608., 49480.,
      51352., 46012., 47896., 49780., 51664.};
  const std::array<int, 4> in_shape = {{1, 9, 10, 2}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, SAME1x9x10x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      343924., 346528., 349132., 351736., 396488., 399440., 402392., 405344.,
      449838., 453132., 456426., 459720., 503950., 507580., 511210., 514840.,
      456480., 459720., 462960., 466200., 408296., 411152., 414008., 416864.,
      359422., 361900., 364378., 366856., 450653., 453446., 456239., 459032.,
      517916., 521080., 524244., 527408., 585816., 589344., 592872., 596400.,
      654325., 658210., 662095., 665980., 591045., 594510., 597975., 601440.,
      527212., 530264., 533316., 536368., 462854., 465500., 468146., 470792.,
      564032., 566944., 569856., 572768., 646624., 649920., 653216., 656512.,
      729624., 733296., 736968., 740640., 813000., 817040., 821080., 825120.,
      732720., 736320., 739920., 743520., 652128., 655296., 658464., 661632.,
      571256., 574000., 576744., 579488., 681261., 684222., 687183., 690144.,
      779412., 782760., 786108., 789456., 877662., 881388., 885114., 888840.,
      975975., 980070., 984165., 988260., 877905., 881550., 885195., 888840.,
      779844., 783048., 786252., 789456., 681828., 684600., 687372., 690144.,
      572432., 574784., 577136., 579488., 653664., 656320., 658976., 661632.,
      734664., 737616., 740568., 743520., 815400., 818640., 821880., 825120.,
      732000., 734880., 737760., 740640., 648928., 651456., 653984., 656512.,
      566216., 568400., 570584., 572768., 465353., 467166., 468979., 470792.,
      530236., 532280., 534324., 536368., 594636., 596904., 599172., 601440.,
      658525., 661010., 663495., 665980., 589785., 591990., 594195., 596400.,
      521612., 523544., 525476., 527408., 454034., 455700., 457366., 459032.,
      362824., 364168., 365512., 366856., 412328., 413840., 415352., 416864.,
      461178., 462852., 464526., 466200., 509350., 511180., 513010., 514840.,
      454860., 456480., 458100., 459720., 401096., 402512., 403928., 405344.,
      348082., 349300., 350518., 351736.};
  const std::array<int, 4> in_shape = {{1, 9, 10, 4}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, VALID1x9x10x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5006.,  5084.,  5162.,  5240.,  5318.,  5396.,  5474.,  5552.,  5630.,
      5708.,  5786.,  5864.,  5942.,  6020.,  6098.,  6176.,  6254.,  6332.,
      6410.,  6488.,  6566.,  6644.,  6722.,  6800.,  6878.,  6956.,  7034.,
      7112.,  8126.,  8204.,  8282.,  8360.,  8438.,  8516.,  8594.,  8672.,
      8750.,  8828.,  8906.,  8984.,  9062.,  9140.,  9218.,  9296.,  9374.,
      9452.,  9530.,  9608.,  9686.,  9764.,  9842.,  9920.,  9998.,  10076.,
      10154., 10232., 11246., 11324., 11402., 11480., 11558., 11636., 11714.,
      11792., 11870., 11948., 12026., 12104., 12182., 12260., 12338., 12416.,
      12494., 12572., 12650., 12728., 12806., 12884., 12962., 13040., 13118.,
      13196., 13274., 13352., 14366., 14444., 14522., 14600., 14678., 14756.,
      14834., 14912., 14990., 15068., 15146., 15224., 15302., 15380., 15458.,
      15536., 15614., 15692., 15770., 15848., 15926., 16004., 16082., 16160.,
      16238., 16316., 16394., 16472., 17486., 17564., 17642., 17720., 17798.,
      17876., 17954., 18032., 18110., 18188., 18266., 18344., 18422., 18500.,
      18578., 18656., 18734., 18812., 18890., 18968., 19046., 19124., 19202.,
      19280., 19358., 19436., 19514., 19592., 20606., 20684., 20762., 20840.,
      20918., 20996., 21074., 21152., 21230., 21308., 21386., 21464., 21542.,
      21620., 21698., 21776., 21854., 21932., 22010., 22088., 22166., 22244.,
      22322., 22400., 22478., 22556., 22634., 22712., 23726., 23804., 23882.,
      23960., 24038., 24116., 24194., 24272., 24350., 24428., 24506., 24584.,
      24662., 24740., 24818., 24896., 24974., 25052., 25130., 25208., 25286.,
      25364., 25442., 25520., 25598., 25676., 25754., 25832.};
  const std::array<int, 4> in_shape = {{1, 9, 10, 4}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, SAME1x9x10x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      683102.,  687848.,  688268.,  693056.,  693434.,  698264.,  698600.,
      703472.,  787456.,  792976.,  793312.,  798880.,  799168.,  804784.,
      805024.,  810688.,  893358.,  899676.,  899892.,  906264.,  906426.,
      912852.,  912960.,  919440.,  1000760., 1007900., 1007960., 1015160.,
      1015160., 1022420., 1022360., 1029680., 906426.,  912960.,  912852.,
      919440.,  919278.,  925920.,  925704.,  932400.,  810688.,  816592.,
      816352.,  822304.,  822016.,  828016.,  827680.,  833728.,  713594.,
      718844.,  718508.,  723800.,  723422.,  728756.,  728336.,  733712.,
      894789.,  901306.,  900326.,  906892.,  905863.,  912478.,  911400.,
      918064.,  1028272., 1035832., 1034544., 1042160., 1040816., 1048488.,
      1047088., 1054816., 1163001., 1171632., 1169994., 1178688., 1176987.,
      1185744., 1183980., 1192800., 1298920., 1308650., 1306620., 1316420.,
      1314320., 1324190., 1322020., 1331960., 1173207., 1182090., 1180074.,
      1189020., 1186941., 1195950., 1193808., 1202880., 1046416., 1054424.,
      1052464., 1060528., 1058512., 1066632., 1064560., 1072736., 918603.,
      925708.,  923846.,  931000.,  929089.,  936292.,  934332.,  941584.,
      1119496., 1128064., 1125264., 1133888., 1131032., 1139712., 1136800.,
      1145536., 1283328., 1293248., 1289856., 1299840., 1296384., 1306432.,
      1302912., 1313024., 1447944., 1459248., 1455216., 1466592., 1462488.,
      1473936., 1469760., 1481280., 1613280., 1626000., 1621280., 1634080.,
      1629280., 1642160., 1637280., 1650240., 1453848., 1465440., 1460976.,
      1472640., 1468104., 1479840., 1475232., 1487040., 1293824., 1304256.,
      1300096., 1310592., 1306368., 1316928., 1312640., 1323264., 1133272.,
      1142512., 1138704., 1148000., 1144136., 1153488., 1149568., 1158976.,
      1351623., 1362522., 1357482., 1368444., 1363341., 1374366., 1369200.,
      1380288., 1546224., 1558824., 1552848., 1565520., 1559472., 1572216.,
      1566096., 1578912., 1740987., 1755324., 1748358., 1762776., 1755729.,
      1770228., 1763100., 1777680., 1935840., 1951950., 1943940., 1960140.,
      1952040., 1968330., 1960140., 1976520., 1741149., 1755810., 1748358.,
      1763100., 1755567., 1770390., 1762776., 1777680., 1546512., 1559688.,
      1552848., 1566096., 1559184., 1572504., 1565520., 1578912., 1352001.,
      1363656., 1357482., 1369200., 1362963., 1374744., 1368444., 1380288.,
      1134056., 1144864., 1138704., 1149568., 1143352., 1154272., 1148000.,
      1158976., 1294848., 1307328., 1300096., 1312640., 1305344., 1317952.,
      1310592., 1323264., 1455144., 1469328., 1460976., 1475232., 1466808.,
      1481136., 1472640., 1487040., 1614880., 1630800., 1621280., 1637280.,
      1627680., 1643760., 1634080., 1650240., 1449528., 1464000., 1455216.,
      1469760., 1460904., 1475520., 1466592., 1481280., 1284864., 1297856.,
      1289856., 1302912., 1294848., 1307968., 1299840., 1313024., 1120952.,
      1132432., 1125264., 1136800., 1129576., 1141168., 1133888., 1145536.,
      920269.,  930706.,  923846.,  934332.,  927423.,  937958.,  931000.,
      941584.,  1048432., 1060472., 1052464., 1064560., 1056496., 1068648.,
      1060528., 1072736., 1175601., 1189272., 1180074., 1193808., 1184547.,
      1198344., 1189020., 1202880., 1301720., 1317050., 1306620., 1322020.,
      1311520., 1326990., 1316420., 1331960., 1165647., 1179570., 1169994.,
      1183980., 1174341., 1188390., 1178688., 1192800., 1030736., 1043224.,
      1034544., 1047088., 1038352., 1050952., 1042160., 1054816., 897043.,
      908068.,  900326.,  911400.,  903609.,  914732.,  906892.,  918064.,
      715862.,  725648.,  718508.,  728336.,  721154.,  731024.,  723800.,
      733712.,  813376.,  824656.,  816352.,  827680.,  819328.,  830704.,
      822304.,  833728.,  909558.,  922356.,  912852.,  925704.,  916146.,
      929052.,  919440.,  932400.,  1004360., 1018700., 1007960., 1022360.,
      1011560., 1026020., 1015160., 1029680., 896706.,  909720.,  899892.,
      912960.,  903078.,  916200.,  906264.,  919440.,  790528.,  802192.,
      793312.,  805024.,  796096.,  807856.,  798880.,  810688.,  685874.,
      696164.,  688268.,  698600.,  690662.,  701036.,  693056.,  703472.};
  const std::array<int, 4> in_shape = {{1, 9, 10, 4}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, VALID1x9x10x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      9448.,  10012., 9592.,  10168., 9736.,  10324., 9880.,  10480., 10024.,
      10636., 10168., 10792., 10312., 10948., 10456., 11104., 10600., 11260.,
      10744., 11416., 10888., 11572., 11032., 11728., 11176., 11884., 11320.,
      12040., 11464., 12196., 11608., 12352., 11752., 12508., 11896., 12664.,
      12040., 12820., 12184., 12976., 12328., 13132., 12472., 13288., 12616.,
      13444., 12760., 13600., 12904., 13756., 13048., 13912., 13192., 14068.,
      13336., 14224., 15208., 16252., 15352., 16408., 15496., 16564., 15640.,
      16720., 15784., 16876., 15928., 17032., 16072., 17188., 16216., 17344.,
      16360., 17500., 16504., 17656., 16648., 17812., 16792., 17968., 16936.,
      18124., 17080., 18280., 17224., 18436., 17368., 18592., 17512., 18748.,
      17656., 18904., 17800., 19060., 17944., 19216., 18088., 19372., 18232.,
      19528., 18376., 19684., 18520., 19840., 18664., 19996., 18808., 20152.,
      18952., 20308., 19096., 20464., 20968., 22492., 21112., 22648., 21256.,
      22804., 21400., 22960., 21544., 23116., 21688., 23272., 21832., 23428.,
      21976., 23584., 22120., 23740., 22264., 23896., 22408., 24052., 22552.,
      24208., 22696., 24364., 22840., 24520., 22984., 24676., 23128., 24832.,
      23272., 24988., 23416., 25144., 23560., 25300., 23704., 25456., 23848.,
      25612., 23992., 25768., 24136., 25924., 24280., 26080., 24424., 26236.,
      24568., 26392., 24712., 26548., 24856., 26704., 26728., 28732., 26872.,
      28888., 27016., 29044., 27160., 29200., 27304., 29356., 27448., 29512.,
      27592., 29668., 27736., 29824., 27880., 29980., 28024., 30136., 28168.,
      30292., 28312., 30448., 28456., 30604., 28600., 30760., 28744., 30916.,
      28888., 31072., 29032., 31228., 29176., 31384., 29320., 31540., 29464.,
      31696., 29608., 31852., 29752., 32008., 29896., 32164., 30040., 32320.,
      30184., 32476., 30328., 32632., 30472., 32788., 30616., 32944., 32488.,
      34972., 32632., 35128., 32776., 35284., 32920., 35440., 33064., 35596.,
      33208., 35752., 33352., 35908., 33496., 36064., 33640., 36220., 33784.,
      36376., 33928., 36532., 34072., 36688., 34216., 36844., 34360., 37000.,
      34504., 37156., 34648., 37312., 34792., 37468., 34936., 37624., 35080.,
      37780., 35224., 37936., 35368., 38092., 35512., 38248., 35656., 38404.,
      35800., 38560., 35944., 38716., 36088., 38872., 36232., 39028., 36376.,
      39184., 38248., 41212., 38392., 41368., 38536., 41524., 38680., 41680.,
      38824., 41836., 38968., 41992., 39112., 42148., 39256., 42304., 39400.,
      42460., 39544., 42616., 39688., 42772., 39832., 42928., 39976., 43084.,
      40120., 43240., 40264., 43396., 40408., 43552., 40552., 43708., 40696.,
      43864., 40840., 44020., 40984., 44176., 41128., 44332., 41272., 44488.,
      41416., 44644., 41560., 44800., 41704., 44956., 41848., 45112., 41992.,
      45268., 42136., 45424., 44008., 47452., 44152., 47608., 44296., 47764.,
      44440., 47920., 44584., 48076., 44728., 48232., 44872., 48388., 45016.,
      48544., 45160., 48700., 45304., 48856., 45448., 49012., 45592., 49168.,
      45736., 49324., 45880., 49480., 46024., 49636., 46168., 49792., 46312.,
      49948., 46456., 50104., 46600., 50260., 46744., 50416., 46888., 50572.,
      47032., 50728., 47176., 50884., 47320., 51040., 47464., 51196., 47608.,
      51352., 47752., 51508., 47896., 51664.};
  const std::array<int, 4> in_shape = {{1, 9, 10, 4}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, SAME1x9x10x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1361458., 1366204., 1370950., 1375696., 1371748., 1376536., 1381324.,
      1386112., 1382038., 1386868., 1391698., 1396528., 1392328., 1397200.,
      1402072., 1406944., 1569392., 1574912., 1580432., 1585952., 1581056.,
      1586624., 1592192., 1597760., 1592720., 1598336., 1603952., 1609568.,
      1604384., 1610048., 1615712., 1621376., 1780398., 1786716., 1793034.,
      1799352., 1793412., 1799784., 1806156., 1812528., 1806426., 1812852.,
      1819278., 1825704., 1819440., 1825920., 1832400., 1838880., 1994380.,
      2001520., 2008660., 2015800., 2008720., 2015920., 2023120., 2030320.,
      2023060., 2030320., 2037580., 2044840., 2037400., 2044720., 2052040.,
      2059360., 1806318., 1812852., 1819386., 1825920., 1819116., 1825704.,
      1832292., 1838880., 1831914., 1838556., 1845198., 1851840., 1844712.,
      1851408., 1858104., 1864800., 1615472., 1621376., 1627280., 1633184.,
      1626752., 1632704., 1638656., 1644608., 1638032., 1644032., 1650032.,
      1656032., 1649312., 1655360., 1661408., 1667456., 1421938., 1427188.,
      1432438., 1437688., 1431724., 1437016., 1442308., 1447600., 1441510.,
      1446844., 1452178., 1457512., 1451296., 1456672., 1462048., 1467424.,
      1783061., 1789578., 1796095., 1802612., 1794086., 1800652., 1807218.,
      1813784., 1805111., 1811726., 1818341., 1824956., 1816136., 1822800.,
      1829464., 1836128., 2048984., 2056544., 2064104., 2071664., 2061472.,
      2069088., 2076704., 2084320., 2073960., 2081632., 2089304., 2096976.,
      2086448., 2094176., 2101904., 2109632., 2317371., 2326002., 2334633.,
      2343264., 2331294., 2339988., 2348682., 2357376., 2345217., 2353974.,
      2362731., 2371488., 2359140., 2367960., 2376780., 2385600., 2588110.,
      2597840., 2607570., 2617300., 2603440., 2613240., 2623040., 2632840.,
      2618770., 2628640., 2638510., 2648380., 2634100., 2644040., 2653980.,
      2663920., 2337531., 2346414., 2355297., 2364180., 2351202., 2360148.,
      2369094., 2378040., 2364873., 2373882., 2382891., 2391900., 2378544.,
      2387616., 2396688., 2405760., 2084824., 2092832., 2100840., 2108848.,
      2096864., 2104928., 2112992., 2121056., 2108904., 2117024., 2125144.,
      2133264., 2120944., 2129120., 2137296., 2145472., 1830101., 1837206.,
      1844311., 1851416., 1840538., 1847692., 1854846., 1862000., 1850975.,
      1858178., 1865381., 1872584., 1861412., 1868664., 1875916., 1883168.,
      2230424., 2238992., 2247560., 2256128., 2241904., 2250528., 2259152.,
      2267776., 2253384., 2262064., 2270744., 2279424., 2264864., 2273600.,
      2282336., 2291072., 2556736., 2566656., 2576576., 2586496., 2569728.,
      2579712., 2589696., 2599680., 2582720., 2592768., 2602816., 2612864.,
      2595712., 2605824., 2615936., 2626048., 2884584., 2895888., 2907192.,
      2918496., 2899056., 2910432., 2921808., 2933184., 2913528., 2924976.,
      2936424., 2947872., 2928000., 2939520., 2951040., 2962560., 3213840.,
      3226560., 3239280., 3252000., 3229760., 3242560., 3255360., 3268160.,
      3245680., 3258560., 3271440., 3284320., 3261600., 3274560., 3287520.,
      3300480., 2896104., 2907696., 2919288., 2930880., 2910288., 2921952.,
      2933616., 2945280., 2924472., 2936208., 2947944., 2959680., 2938656.,
      2950464., 2962272., 2974080., 2577216., 2587648., 2598080., 2608512.,
      2589696., 2600192., 2610688., 2621184., 2602176., 2612736., 2623296.,
      2633856., 2614656., 2625280., 2635904., 2646528., 2257304., 2266544.,
      2275784., 2285024., 2268112., 2277408., 2286704., 2296000., 2278920.,
      2288272., 2297624., 2306976., 2289728., 2299136., 2308544., 2317952.,
      2692347., 2703246., 2714145., 2725044., 2704002., 2714964., 2725926.,
      2736888., 2715657., 2726682., 2737707., 2748732., 2727312., 2738400.,
      2749488., 2760576., 3079848., 3092448., 3105048., 3117648., 3093024.,
      3105696., 3118368., 3131040., 3106200., 3118944., 3131688., 3144432.,
      3119376., 3132192., 3145008., 3157824., 3467637., 3481974., 3496311.,
      3510648., 3482298., 3496716., 3511134., 3525552., 3496959., 3511458.,
      3525957., 3540456., 3511620., 3526200., 3540780., 3555360., 3855570.,
      3871680., 3887790., 3903900., 3871680., 3887880., 3904080., 3920280.,
      3887790., 3904080., 3920370., 3936660., 3903900., 3920280., 3936660.,
      3953040., 3467637., 3482298., 3496959., 3511620., 3481974., 3496716.,
      3511458., 3526200., 3496311., 3511134., 3525957., 3540780., 3510648.,
      3525552., 3540456., 3555360., 3079848., 3093024., 3106200., 3119376.,
      3092448., 3105696., 3118944., 3132192., 3105048., 3118368., 3131688.,
      3145008., 3117648., 3131040., 3144432., 3157824., 2692347., 2704002.,
      2715657., 2727312., 2703246., 2714964., 2726682., 2738400., 2714145.,
      2725926., 2737707., 2749488., 2725044., 2736888., 2748732., 2760576.,
      2257304., 2268112., 2278920., 2289728., 2266544., 2277408., 2288272.,
      2299136., 2275784., 2286704., 2297624., 2308544., 2285024., 2296000.,
      2306976., 2317952., 2577216., 2589696., 2602176., 2614656., 2587648.,
      2600192., 2612736., 2625280., 2598080., 2610688., 2623296., 2635904.,
      2608512., 2621184., 2633856., 2646528., 2896104., 2910288., 2924472.,
      2938656., 2907696., 2921952., 2936208., 2950464., 2919288., 2933616.,
      2947944., 2962272., 2930880., 2945280., 2959680., 2974080., 3213840.,
      3229760., 3245680., 3261600., 3226560., 3242560., 3258560., 3274560.,
      3239280., 3255360., 3271440., 3287520., 3252000., 3268160., 3284320.,
      3300480., 2884584., 2899056., 2913528., 2928000., 2895888., 2910432.,
      2924976., 2939520., 2907192., 2921808., 2936424., 2951040., 2918496.,
      2933184., 2947872., 2962560., 2556736., 2569728., 2582720., 2595712.,
      2566656., 2579712., 2592768., 2605824., 2576576., 2589696., 2602816.,
      2615936., 2586496., 2599680., 2612864., 2626048., 2230424., 2241904.,
      2253384., 2264864., 2238992., 2250528., 2262064., 2273600., 2247560.,
      2259152., 2270744., 2282336., 2256128., 2267776., 2279424., 2291072.,
      1830101., 1840538., 1850975., 1861412., 1837206., 1847692., 1858178.,
      1868664., 1844311., 1854846., 1865381., 1875916., 1851416., 1862000.,
      1872584., 1883168., 2084824., 2096864., 2108904., 2120944., 2092832.,
      2104928., 2117024., 2129120., 2100840., 2112992., 2125144., 2137296.,
      2108848., 2121056., 2133264., 2145472., 2337531., 2351202., 2364873.,
      2378544., 2346414., 2360148., 2373882., 2387616., 2355297., 2369094.,
      2382891., 2396688., 2364180., 2378040., 2391900., 2405760., 2588110.,
      2603440., 2618770., 2634100., 2597840., 2613240., 2628640., 2644040.,
      2607570., 2623040., 2638510., 2653980., 2617300., 2632840., 2648380.,
      2663920., 2317371., 2331294., 2345217., 2359140., 2326002., 2339988.,
      2353974., 2367960., 2334633., 2348682., 2362731., 2376780., 2343264.,
      2357376., 2371488., 2385600., 2048984., 2061472., 2073960., 2086448.,
      2056544., 2069088., 2081632., 2094176., 2064104., 2076704., 2089304.,
      2101904., 2071664., 2084320., 2096976., 2109632., 1783061., 1794086.,
      1805111., 1816136., 1789578., 1800652., 1811726., 1822800., 1796095.,
      1807218., 1818341., 1829464., 1802612., 1813784., 1824956., 1836128.,
      1421938., 1431724., 1441510., 1451296., 1427188., 1437016., 1446844.,
      1456672., 1432438., 1442308., 1452178., 1462048., 1437688., 1447600.,
      1457512., 1467424., 1615472., 1626752., 1638032., 1649312., 1621376.,
      1632704., 1644032., 1655360., 1627280., 1638656., 1650032., 1661408.,
      1633184., 1644608., 1656032., 1667456., 1806318., 1819116., 1831914.,
      1844712., 1812852., 1825704., 1838556., 1851408., 1819386., 1832292.,
      1845198., 1858104., 1825920., 1838880., 1851840., 1864800., 1994380.,
      2008720., 2023060., 2037400., 2001520., 2015920., 2030320., 2044720.,
      2008660., 2023120., 2037580., 2052040., 2015800., 2030320., 2044840.,
      2059360., 1780398., 1793412., 1806426., 1819440., 1786716., 1799784.,
      1812852., 1825920., 1793034., 1806156., 1819278., 1832400., 1799352.,
      1812528., 1825704., 1838880., 1569392., 1581056., 1592720., 1604384.,
      1574912., 1586624., 1598336., 1610048., 1580432., 1592192., 1603952.,
      1615712., 1585952., 1597760., 1609568., 1621376., 1361458., 1371748.,
      1382038., 1392328., 1366204., 1376536., 1386868., 1397200., 1370950.,
      1381324., 1391698., 1402072., 1375696., 1386112., 1396528., 1406944.};
  const std::array<int, 4> in_shape = {{1, 9, 10, 4}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, VALID1x9x10x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      18332., 18896., 19460., 20024.,  18608., 19184., 19760., 20336.,
      18884., 19472., 20060., 20648.,  19160., 19760., 20360., 20960.,
      19436., 20048., 20660., 21272.,  19712., 20336., 20960., 21584.,
      19988., 20624., 21260., 21896.,  20264., 20912., 21560., 22208.,
      20540., 21200., 21860., 22520.,  20816., 21488., 22160., 22832.,
      21092., 21776., 22460., 23144.,  21368., 22064., 22760., 23456.,
      21644., 22352., 23060., 23768.,  21920., 22640., 23360., 24080.,
      22196., 22928., 23660., 24392.,  22472., 23216., 23960., 24704.,
      22748., 23504., 24260., 25016.,  23024., 23792., 24560., 25328.,
      23300., 24080., 24860., 25640.,  23576., 24368., 25160., 25952.,
      23852., 24656., 25460., 26264.,  24128., 24944., 25760., 26576.,
      24404., 25232., 26060., 26888.,  24680., 25520., 26360., 27200.,
      24956., 25808., 26660., 27512.,  25232., 26096., 26960., 27824.,
      25508., 26384., 27260., 28136.,  25784., 26672., 27560., 28448.,
      29372., 30416., 31460., 32504.,  29648., 30704., 31760., 32816.,
      29924., 30992., 32060., 33128.,  30200., 31280., 32360., 33440.,
      30476., 31568., 32660., 33752.,  30752., 31856., 32960., 34064.,
      31028., 32144., 33260., 34376.,  31304., 32432., 33560., 34688.,
      31580., 32720., 33860., 35000.,  31856., 33008., 34160., 35312.,
      32132., 33296., 34460., 35624.,  32408., 33584., 34760., 35936.,
      32684., 33872., 35060., 36248.,  32960., 34160., 35360., 36560.,
      33236., 34448., 35660., 36872.,  33512., 34736., 35960., 37184.,
      33788., 35024., 36260., 37496.,  34064., 35312., 36560., 37808.,
      34340., 35600., 36860., 38120.,  34616., 35888., 37160., 38432.,
      34892., 36176., 37460., 38744.,  35168., 36464., 37760., 39056.,
      35444., 36752., 38060., 39368.,  35720., 37040., 38360., 39680.,
      35996., 37328., 38660., 39992.,  36272., 37616., 38960., 40304.,
      36548., 37904., 39260., 40616.,  36824., 38192., 39560., 40928.,
      40412., 41936., 43460., 44984.,  40688., 42224., 43760., 45296.,
      40964., 42512., 44060., 45608.,  41240., 42800., 44360., 45920.,
      41516., 43088., 44660., 46232.,  41792., 43376., 44960., 46544.,
      42068., 43664., 45260., 46856.,  42344., 43952., 45560., 47168.,
      42620., 44240., 45860., 47480.,  42896., 44528., 46160., 47792.,
      43172., 44816., 46460., 48104.,  43448., 45104., 46760., 48416.,
      43724., 45392., 47060., 48728.,  44000., 45680., 47360., 49040.,
      44276., 45968., 47660., 49352.,  44552., 46256., 47960., 49664.,
      44828., 46544., 48260., 49976.,  45104., 46832., 48560., 50288.,
      45380., 47120., 48860., 50600.,  45656., 47408., 49160., 50912.,
      45932., 47696., 49460., 51224.,  46208., 47984., 49760., 51536.,
      46484., 48272., 50060., 51848.,  46760., 48560., 50360., 52160.,
      47036., 48848., 50660., 52472.,  47312., 49136., 50960., 52784.,
      47588., 49424., 51260., 53096.,  47864., 49712., 51560., 53408.,
      51452., 53456., 55460., 57464.,  51728., 53744., 55760., 57776.,
      52004., 54032., 56060., 58088.,  52280., 54320., 56360., 58400.,
      52556., 54608., 56660., 58712.,  52832., 54896., 56960., 59024.,
      53108., 55184., 57260., 59336.,  53384., 55472., 57560., 59648.,
      53660., 55760., 57860., 59960.,  53936., 56048., 58160., 60272.,
      54212., 56336., 58460., 60584.,  54488., 56624., 58760., 60896.,
      54764., 56912., 59060., 61208.,  55040., 57200., 59360., 61520.,
      55316., 57488., 59660., 61832.,  55592., 57776., 59960., 62144.,
      55868., 58064., 60260., 62456.,  56144., 58352., 60560., 62768.,
      56420., 58640., 60860., 63080.,  56696., 58928., 61160., 63392.,
      56972., 59216., 61460., 63704.,  57248., 59504., 61760., 64016.,
      57524., 59792., 62060., 64328.,  57800., 60080., 62360., 64640.,
      58076., 60368., 62660., 64952.,  58352., 60656., 62960., 65264.,
      58628., 60944., 63260., 65576.,  58904., 61232., 63560., 65888.,
      62492., 64976., 67460., 69944.,  62768., 65264., 67760., 70256.,
      63044., 65552., 68060., 70568.,  63320., 65840., 68360., 70880.,
      63596., 66128., 68660., 71192.,  63872., 66416., 68960., 71504.,
      64148., 66704., 69260., 71816.,  64424., 66992., 69560., 72128.,
      64700., 67280., 69860., 72440.,  64976., 67568., 70160., 72752.,
      65252., 67856., 70460., 73064.,  65528., 68144., 70760., 73376.,
      65804., 68432., 71060., 73688.,  66080., 68720., 71360., 74000.,
      66356., 69008., 71660., 74312.,  66632., 69296., 71960., 74624.,
      66908., 69584., 72260., 74936.,  67184., 69872., 72560., 75248.,
      67460., 70160., 72860., 75560.,  67736., 70448., 73160., 75872.,
      68012., 70736., 73460., 76184.,  68288., 71024., 73760., 76496.,
      68564., 71312., 74060., 76808.,  68840., 71600., 74360., 77120.,
      69116., 71888., 74660., 77432.,  69392., 72176., 74960., 77744.,
      69668., 72464., 75260., 78056.,  69944., 72752., 75560., 78368.,
      73532., 76496., 79460., 82424.,  73808., 76784., 79760., 82736.,
      74084., 77072., 80060., 83048.,  74360., 77360., 80360., 83360.,
      74636., 77648., 80660., 83672.,  74912., 77936., 80960., 83984.,
      75188., 78224., 81260., 84296.,  75464., 78512., 81560., 84608.,
      75740., 78800., 81860., 84920.,  76016., 79088., 82160., 85232.,
      76292., 79376., 82460., 85544.,  76568., 79664., 82760., 85856.,
      76844., 79952., 83060., 86168.,  77120., 80240., 83360., 86480.,
      77396., 80528., 83660., 86792.,  77672., 80816., 83960., 87104.,
      77948., 81104., 84260., 87416.,  78224., 81392., 84560., 87728.,
      78500., 81680., 84860., 88040.,  78776., 81968., 85160., 88352.,
      79052., 82256., 85460., 88664.,  79328., 82544., 85760., 88976.,
      79604., 82832., 86060., 89288.,  79880., 83120., 86360., 89600.,
      80156., 83408., 86660., 89912.,  80432., 83696., 86960., 90224.,
      80708., 83984., 87260., 90536.,  80984., 84272., 87560., 90848.,
      84572., 88016., 91460., 94904.,  84848., 88304., 91760., 95216.,
      85124., 88592., 92060., 95528.,  85400., 88880., 92360., 95840.,
      85676., 89168., 92660., 96152.,  85952., 89456., 92960., 96464.,
      86228., 89744., 93260., 96776.,  86504., 90032., 93560., 97088.,
      86780., 90320., 93860., 97400.,  87056., 90608., 94160., 97712.,
      87332., 90896., 94460., 98024.,  87608., 91184., 94760., 98336.,
      87884., 91472., 95060., 98648.,  88160., 91760., 95360., 98960.,
      88436., 92048., 95660., 99272.,  88712., 92336., 95960., 99584.,
      88988., 92624., 96260., 99896.,  89264., 92912., 96560., 100208.,
      89540., 93200., 96860., 100520., 89816., 93488., 97160., 100832.,
      90092., 93776., 97460., 101144., 90368., 94064., 97760., 101456.,
      90644., 94352., 98060., 101768., 90920., 94640., 98360., 102080.,
      91196., 94928., 98660., 102392., 91472., 95216., 98960., 102704.,
      91748., 95504., 99260., 103016., 92024., 95792., 99560., 103328.};
  const std::array<int, 4> in_shape = {{1, 9, 10, 4}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, SAME1x10x8x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      60060.,  72667.,  85456.,  98420.,  86632.,  74683.,  62580.,
      75520.,  91112.,  106848., 122720., 107744., 92648.,  77440.,
      91740.,  110421., 129192., 148044., 129696., 111285., 92820.,
      108400., 130210., 152040., 173880., 152040., 130210., 108400.,
      92820.,  111285., 129696., 148044., 129192., 110421., 91740.,
      77440.,  92648.,  107744., 122720., 106848., 91112.,  75520.,
      62580.,  74683.,  86632.,  98420.,  85456.,  72667.,  60060.};
  const std::array<int, 4> in_shape = {{1, 10, 8, 1}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, VALID1x10x8x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      648.,  684.,  720.,  756.,  792.,  828.,  864.,  936.,  972.,  1008.,
      1044., 1080., 1116., 1152., 1224., 1260., 1296., 1332., 1368., 1404.,
      1440., 1512., 1548., 1584., 1620., 1656., 1692., 1728., 1800., 1836.,
      1872., 1908., 1944., 1980., 2016., 2088., 2124., 2160., 2196., 2232.,
      2268., 2304., 2376., 2412., 2448., 2484., 2520., 2556., 2592.};
  const std::array<int, 4> in_shape = {{1, 10, 8, 1}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, SAME1x10x8x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      119175., 120120., 144179., 145334., 169540., 170912., 195244., 196840.,
      171843., 173264., 148127., 149366., 124110., 125160., 149800., 151040.,
      180712., 182224., 211904., 213696., 243360., 245440., 213640., 215488.,
      183688., 185296., 153520., 154880., 181905., 183480., 218925., 220842.,
      256116., 258384., 293460., 296088., 257061., 259392., 220545., 222570.,
      183930., 185640., 214850., 216800., 258050., 260420., 301280., 304080.,
      344520., 347760., 301210., 304080., 257930., 260420., 214700., 216800.,
      183705., 185640., 220221., 222570., 256620., 259392., 292884., 296088.,
      255549., 258384., 218385., 220842., 181410., 183480., 153000., 154880.,
      183016., 185296., 212800., 215488., 242336., 245440., 210952., 213696.,
      179848., 182224., 149040., 151040., 123375., 125160., 147203., 149366.,
      170716., 173264., 193900., 196840., 168315., 170912., 143087., 145334.,
      118230., 120120.};
  const std::array<int, 4> in_shape = {{1, 10, 8, 1}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, VALID1x10x8x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1188., 1296., 1252., 1368., 1316., 1440., 1380., 1512., 1444., 1584.,
      1508., 1656., 1572., 1728., 1700., 1872., 1764., 1944., 1828., 2016.,
      1892., 2088., 1956., 2160., 2020., 2232., 2084., 2304., 2212., 2448.,
      2276., 2520., 2340., 2592., 2404., 2664., 2468., 2736., 2532., 2808.,
      2596., 2880., 2724., 3024., 2788., 3096., 2852., 3168., 2916., 3240.,
      2980., 3312., 3044., 3384., 3108., 3456., 3236., 3600., 3300., 3672.,
      3364., 3744., 3428., 3816., 3492., 3888., 3556., 3960., 3620., 4032.,
      3748., 4176., 3812., 4248., 3876., 4320., 3940., 4392., 4004., 4464.,
      4068., 4536., 4132., 4608., 4260., 4752., 4324., 4824., 4388., 4896.,
      4452., 4968., 4516., 5040., 4580., 5112., 4644., 5184.};
  const std::array<int, 4> in_shape = {{1, 10, 8, 1}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, SAME1x10x8x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      237405., 238350., 239295., 240240., 287203., 288358., 289513., 290668.,
      337708., 339080., 340452., 341824., 388892., 390488., 392084., 393680.,
      342265., 343686., 345107., 346528., 295015., 296254., 297493., 298732.,
      247170., 248220., 249270., 250320., 298360., 299600., 300840., 302080.,
      359912., 361424., 362936., 364448., 422016., 423808., 425600., 427392.,
      484640., 486720., 488800., 490880., 425432., 427280., 429128., 430976.,
      365768., 367376., 368984., 370592., 305680., 307040., 308400., 309760.,
      362235., 363810., 365385., 366960., 435933., 437850., 439767., 441684.,
      509964., 512232., 514500., 516768., 584292., 586920., 589548., 592176.,
      511791., 514122., 516453., 518784., 439065., 441090., 443115., 445140.,
      366150., 367860., 369570., 371280., 427750., 429700., 431650., 433600.,
      513730., 516100., 518470., 520840., 599760., 602560., 605360., 608160.,
      685800., 689040., 692280., 695520., 599550., 602420., 605290., 608160.,
      513370., 515860., 518350., 520840., 427300., 429400., 431500., 433600.,
      365475., 367410., 369345., 371280., 438093., 440442., 442791., 445140.,
      510468., 513240., 516012., 518784., 582564., 585768., 588972., 592176.,
      508263., 511098., 513933., 516768., 434313., 436770., 439227., 441684.,
      360750., 362820., 364890., 366960., 304120., 306000., 307880., 309760.,
      363752., 366032., 368312., 370592., 422912., 425600., 428288., 430976.,
      481568., 484672., 487776., 490880., 419160., 421904., 424648., 427392.,
      357320., 359696., 362072., 364448., 296080., 298080., 300080., 302080.,
      244965., 246750., 248535., 250320., 292243., 294406., 296569., 298732.,
      338884., 341432., 343980., 346528., 384860., 387800., 390740., 393680.,
      334033., 336630., 339227., 341824., 283927., 286174., 288421., 290668.,
      234570., 236460., 238350., 240240.};
  const std::array<int, 4> in_shape = {{1, 10, 8, 1}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, VALID1x10x8x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      2268., 2376.,  2484., 2592., 2388., 2504., 2620., 2736.,  2508., 2632.,
      2756., 2880.,  2628., 2760., 2892., 3024., 2748., 2888.,  3028., 3168.,
      2868., 3016.,  3164., 3312., 2988., 3144., 3300., 3456.,  3228., 3400.,
      3572., 3744.,  3348., 3528., 3708., 3888., 3468., 3656.,  3844., 4032.,
      3588., 3784.,  3980., 4176., 3708., 3912., 4116., 4320.,  3828., 4040.,
      4252., 4464.,  3948., 4168., 4388., 4608., 4188., 4424.,  4660., 4896.,
      4308., 4552.,  4796., 5040., 4428., 4680., 4932., 5184.,  4548., 4808.,
      5068., 5328.,  4668., 4936., 5204., 5472., 4788., 5064.,  5340., 5616.,
      4908., 5192.,  5476., 5760., 5148., 5448., 5748., 6048.,  5268., 5576.,
      5884., 6192.,  5388., 5704., 6020., 6336., 5508., 5832.,  6156., 6480.,
      5628., 5960.,  6292., 6624., 5748., 6088., 6428., 6768.,  5868., 6216.,
      6564., 6912.,  6108., 6472., 6836., 7200., 6228., 6600.,  6972., 7344.,
      6348., 6728.,  7108., 7488., 6468., 6856., 7244., 7632.,  6588., 6984.,
      7380., 7776.,  6708., 7112., 7516., 7920., 6828., 7240.,  7652., 8064.,
      7068., 7496.,  7924., 8352., 7188., 7624., 8060., 8496.,  7308., 7752.,
      8196., 8640.,  7428., 7880., 8332., 8784., 7548., 8008.,  8468., 8928.,
      7668., 8136.,  8604., 9072., 7788., 8264., 8740., 9216.,  8028., 8520.,
      9012., 9504.,  8148., 8648., 9148., 9648., 8268., 8776.,  9284., 9792.,
      8388., 8904.,  9420., 9936., 8508., 9032., 9556., 10080., 8628., 9160.,
      9692., 10224., 8748., 9288., 9828., 10368.};
  const std::array<int, 4> in_shape = {{1, 10, 8, 1}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, SAME1x10x8x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      118230., 120120., 143087., 145334., 168315., 170912., 193900., 196840.,
      170716., 173264., 147203., 149366., 123375., 125160., 149040., 151040.,
      179848., 182224., 210952., 213696., 242336., 245440., 212800., 215488.,
      183016., 185296., 153000., 154880., 181410., 183480., 218385., 220842.,
      255549., 258384., 292884., 296088., 256620., 259392., 220221., 222570.,
      183705., 185640., 214700., 216800., 257930., 260420., 301210., 304080.,
      344520., 347760., 301280., 304080., 258050., 260420., 214850., 216800.,
      183930., 185640., 220545., 222570., 257061., 259392., 293460., 296088.,
      256116., 258384., 218925., 220842., 181905., 183480., 153520., 154880.,
      183688., 185296., 213640., 215488., 243360., 245440., 211904., 213696.,
      180712., 182224., 149800., 151040., 124110., 125160., 148127., 149366.,
      171843., 173264., 195244., 196840., 169540., 170912., 144179., 145334.,
      119175., 120120.};
  const std::array<int, 4> in_shape = {{1, 10, 8, 2}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, VALID1x10x8x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1260., 1296., 1332., 1368., 1404., 1440., 1476., 1512., 1548., 1584.,
      1620., 1656., 1692., 1728., 1836., 1872., 1908., 1944., 1980., 2016.,
      2052., 2088., 2124., 2160., 2196., 2232., 2268., 2304., 2412., 2448.,
      2484., 2520., 2556., 2592., 2628., 2664., 2700., 2736., 2772., 2808.,
      2844., 2880., 2988., 3024., 3060., 3096., 3132., 3168., 3204., 3240.,
      3276., 3312., 3348., 3384., 3420., 3456., 3564., 3600., 3636., 3672.,
      3708., 3744., 3780., 3816., 3852., 3888., 3924., 3960., 3996., 4032.,
      4140., 4176., 4212., 4248., 4284., 4320., 4356., 4392., 4428., 4464.,
      4500., 4536., 4572., 4608., 4716., 4752., 4788., 4824., 4860., 4896.,
      4932., 4968., 5004., 5040., 5076., 5112., 5148., 5184.};
  const std::array<int, 4> in_shape = {{1, 10, 8, 2}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, SAME1x10x8x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      234605., 236460., 238350., 240240., 283906., 286174., 288358., 290668.,
      333935., 336630., 339080., 341824., 384664., 387800., 390488., 393680.,
      338639., 341432., 343686., 346528., 291970., 294406., 296254., 298732.,
      244685., 246750., 248220., 250320., 295640., 298080., 299600., 302080.,
      356720., 359696., 361424., 364448., 418376., 421904., 423808., 427392.,
      480576., 484672., 486720., 490880., 421960., 425600., 427280., 430976.,
      362864., 366032., 367376., 370592., 303320., 306000., 307040., 309760.,
      359715., 362820., 363810., 366960., 432990., 436770., 437850., 441684.,
      506625., 511098., 512232., 516768., 580584., 585768., 586920., 592176.,
      508641., 513240., 514122., 518784., 436446., 440442., 441090., 445140.,
      364035., 367410., 367860., 371280., 425550., 429400., 429700., 433600.,
      511180., 515860., 516100., 520840., 596890., 602420., 602560., 608160.,
      682640., 689040., 689040., 695520., 596890., 602560., 602420., 608160.,
      511180., 516100., 515860., 520840., 425550., 429700., 429400., 433600.,
      364035., 367860., 367410., 371280., 436446., 441090., 440442., 445140.,
      508641., 514122., 513240., 518784., 580584., 586920., 585768., 592176.,
      506625., 512232., 511098., 516768., 432990., 437850., 436770., 441684.,
      359715., 363810., 362820., 366960., 303320., 307040., 306000., 309760.,
      362864., 367376., 366032., 370592., 421960., 427280., 425600., 430976.,
      480576., 486720., 484672., 490880., 418376., 423808., 421904., 427392.,
      356720., 361424., 359696., 364448., 295640., 299600., 298080., 302080.,
      244685., 248220., 246750., 250320., 291970., 296254., 294406., 298732.,
      338639., 343686., 341432., 346528., 384664., 390488., 387800., 393680.,
      333935., 339080., 336630., 341824., 283906., 288358., 286174., 290668.,
      234605., 238350., 236460., 240240.};
  const std::array<int, 4> in_shape = {{1, 10, 8, 2}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, VALID1x10x8x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      2312., 2520.,  2376., 2592.,  2440., 2664.,  2504., 2736.,  2568., 2808.,
      2632., 2880.,  2696., 2952.,  2760., 3024.,  2824., 3096.,  2888., 3168.,
      2952., 3240.,  3016., 3312.,  3080., 3384.,  3144., 3456.,  3336., 3672.,
      3400., 3744.,  3464., 3816.,  3528., 3888.,  3592., 3960.,  3656., 4032.,
      3720., 4104.,  3784., 4176.,  3848., 4248.,  3912., 4320.,  3976., 4392.,
      4040., 4464.,  4104., 4536.,  4168., 4608.,  4360., 4824.,  4424., 4896.,
      4488., 4968.,  4552., 5040.,  4616., 5112.,  4680., 5184.,  4744., 5256.,
      4808., 5328.,  4872., 5400.,  4936., 5472.,  5000., 5544.,  5064., 5616.,
      5128., 5688.,  5192., 5760.,  5384., 5976.,  5448., 6048.,  5512., 6120.,
      5576., 6192.,  5640., 6264.,  5704., 6336.,  5768., 6408.,  5832., 6480.,
      5896., 6552.,  5960., 6624.,  6024., 6696.,  6088., 6768.,  6152., 6840.,
      6216., 6912.,  6408., 7128.,  6472., 7200.,  6536., 7272.,  6600., 7344.,
      6664., 7416.,  6728., 7488.,  6792., 7560.,  6856., 7632.,  6920., 7704.,
      6984., 7776.,  7048., 7848.,  7112., 7920.,  7176., 7992.,  7240., 8064.,
      7432., 8280.,  7496., 8352.,  7560., 8424.,  7624., 8496.,  7688., 8568.,
      7752., 8640.,  7816., 8712.,  7880., 8784.,  7944., 8856.,  8008., 8928.,
      8072., 9000.,  8136., 9072.,  8200., 9144.,  8264., 9216.,  8456., 9432.,
      8520., 9504.,  8584., 9576.,  8648., 9648.,  8712., 9720.,  8776., 9792.,
      8840., 9864.,  8904., 9936.,  8968., 10008., 9032., 10080., 9096., 10152.,
      9160., 10224., 9224., 10296., 9288., 10368.};
  const std::array<int, 4> in_shape = {{1, 10, 8, 2}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, SAME1x10x8x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      467355.,  469210.,  471065.,  472920.,  474810.,  476700.,  478590.,
      480480.,  565544.,  567812.,  570080.,  572348.,  574406.,  576716.,
      579026.,  581336.,  665175.,  667870.,  670565.,  673260.,  675416.,
      678160.,  680904.,  683648.,  766192.,  769328.,  772464.,  775600.,
      777784.,  780976.,  784168.,  787360.,  674485.,  677278.,  680071.,
      682864.,  684530.,  687372.,  690214.,  693056.,  581504.,  583940.,
      586376.,  588812.,  590030.,  592508.,  594986.,  597464.,  487305.,
      489370.,  491435.,  493500.,  494340.,  496440.,  498540.,  500640.,
      588840.,  591280.,  593720.,  596160.,  596720.,  599200.,  601680.,
      604160.,  710464.,  713440.,  716416.,  719392.,  719824.,  722848.,
      725872.,  728896.,  833224.,  836752.,  840280.,  843808.,  844032.,
      847616.,  851200.,  854784.,  957056.,  961152.,  965248.,  969344.,
      969280.,  973440.,  977600.,  981760.,  840280.,  843920.,  847560.,
      851200.,  850864.,  854560.,  858256.,  861952.,  722560.,  725728.,
      728896.,  732064.,  731536.,  734752.,  737968.,  741184.,  603960.,
      606640.,  609320.,  612000.,  611360.,  614080.,  616800.,  619520.,
      716325.,  719430.,  722535.,  725640.,  724470.,  727620.,  730770.,
      733920.,  862200.,  865980.,  869760.,  873540.,  871866.,  875700.,
      879534.,  883368.,  1008777., 1013250., 1017723., 1022196., 1019928.,
      1024464., 1029000., 1033536., 1155984., 1161168., 1166352., 1171536.,
      1168584., 1173840., 1179096., 1184352., 1012683., 1017282., 1021881.,
      1026480., 1023582., 1028244., 1032906., 1037568., 868896.,  872892.,
      876888.,  880884.,  878130.,  882180.,  886230.,  890280.,  724695.,
      728070.,  731445.,  734820.,  732300.,  735720.,  739140.,  742560.,
      847250.,  851100.,  854950.,  858800.,  855500.,  859400.,  863300.,
      867200.,  1017680., 1022360., 1027040., 1031720., 1027460., 1032200.,
      1036940., 1041680., 1188250., 1193780., 1199310., 1204840., 1199520.,
      1205120., 1210720., 1216320., 1358880., 1365280., 1371680., 1378080.,
      1371600., 1378080., 1384560., 1391040., 1188110., 1193780., 1199450.,
      1205120., 1199100., 1204840., 1210580., 1216320., 1017440., 1022360.,
      1027280., 1032200., 1026740., 1031720., 1036700., 1041680., 846950.,
      851100.,  855250.,  859400.,  854600.,  858800.,  863000.,  867200.,
      724245.,  728070.,  731895.,  735720.,  730950.,  734820.,  738690.,
      742560.,  868248.,  872892.,  877536.,  882180.,  876186.,  880884.,
      885582.,  890280.,  1011801., 1017282., 1022763., 1028244., 1020936.,
      1026480., 1032024., 1037568., 1154832., 1161168., 1167504., 1173840.,
      1165128., 1171536., 1177944., 1184352., 1007643., 1013250., 1018857.,
      1024464., 1016526., 1022196., 1027866., 1033536., 861120.,  865980.,
      870840.,  875700.,  868626.,  873540.,  878454.,  883368.,  715335.,
      719430.,  723525.,  727620.,  721500.,  725640.,  729780.,  733920.,
      602920.,  606640.,  610360.,  614080.,  608240.,  612000.,  615760.,
      619520.,  721216.,  725728.,  730240.,  734752.,  727504.,  732064.,
      736624.,  741184.,  838600.,  843920.,  849240.,  854560.,  845824.,
      851200.,  856576.,  861952.,  955008.,  961152.,  967296.,  973440.,
      963136.,  969344.,  975552.,  981760.,  831320.,  836752.,  842184.,
      847616.,  838320.,  843808.,  849296.,  854784.,  708736.,  713440.,
      718144.,  722848.,  714640.,  719392.,  724144.,  728896.,  587320.,
      591280.,  595240.,  599200.,  592160.,  596160.,  600160.,  604160.,
      485835.,  489370.,  492905.,  496440.,  489930.,  493500.,  497070.,
      500640.,  579656.,  583940.,  588224.,  592508.,  584486.,  588812.,
      593138.,  597464.,  672231.,  677278.,  682325.,  687372.,  677768.,
      682864.,  687960.,  693056.,  763504.,  769328.,  775152.,  780976.,
      769720.,  775600.,  781480.,  787360.,  662725.,  667870.,  673015.,
      678160.,  668066.,  673260.,  678454.,  683648.,  563360.,  567812.,
      572264.,  576716.,  567854.,  572348.,  576842.,  581336.,  465465.,
      469210.,  472955.,  476700.,  469140.,  472920.,  476700.,  480480.};
  const std::array<int, 4> in_shape = {{1, 10, 8, 2}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, VALID1x10x8x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      4416.,  4624.,  4832.,  5040.,  4536.,  4752.,  4968.,  5184.,  4656.,
      4880.,  5104.,  5328.,  4776.,  5008.,  5240.,  5472.,  4896.,  5136.,
      5376.,  5616.,  5016.,  5264.,  5512.,  5760.,  5136.,  5392.,  5648.,
      5904.,  5256.,  5520.,  5784.,  6048.,  5376.,  5648.,  5920.,  6192.,
      5496.,  5776.,  6056.,  6336.,  5616.,  5904.,  6192.,  6480.,  5736.,
      6032.,  6328.,  6624.,  5856.,  6160.,  6464.,  6768.,  5976.,  6288.,
      6600.,  6912.,  6336.,  6672.,  7008.,  7344.,  6456.,  6800.,  7144.,
      7488.,  6576.,  6928.,  7280.,  7632.,  6696.,  7056.,  7416.,  7776.,
      6816.,  7184.,  7552.,  7920.,  6936.,  7312.,  7688.,  8064.,  7056.,
      7440.,  7824.,  8208.,  7176.,  7568.,  7960.,  8352.,  7296.,  7696.,
      8096.,  8496.,  7416.,  7824.,  8232.,  8640.,  7536.,  7952.,  8368.,
      8784.,  7656.,  8080.,  8504.,  8928.,  7776.,  8208.,  8640.,  9072.,
      7896.,  8336.,  8776.,  9216.,  8256.,  8720.,  9184.,  9648.,  8376.,
      8848.,  9320.,  9792.,  8496.,  8976.,  9456.,  9936.,  8616.,  9104.,
      9592.,  10080., 8736.,  9232.,  9728.,  10224., 8856.,  9360.,  9864.,
      10368., 8976.,  9488.,  10000., 10512., 9096.,  9616.,  10136., 10656.,
      9216.,  9744.,  10272., 10800., 9336.,  9872.,  10408., 10944., 9456.,
      10000., 10544., 11088., 9576.,  10128., 10680., 11232., 9696.,  10256.,
      10816., 11376., 9816.,  10384., 10952., 11520., 10176., 10768., 11360.,
      11952., 10296., 10896., 11496., 12096., 10416., 11024., 11632., 12240.,
      10536., 11152., 11768., 12384., 10656., 11280., 11904., 12528., 10776.,
      11408., 12040., 12672., 10896., 11536., 12176., 12816., 11016., 11664.,
      12312., 12960., 11136., 11792., 12448., 13104., 11256., 11920., 12584.,
      13248., 11376., 12048., 12720., 13392., 11496., 12176., 12856., 13536.,
      11616., 12304., 12992., 13680., 11736., 12432., 13128., 13824., 12096.,
      12816., 13536., 14256., 12216., 12944., 13672., 14400., 12336., 13072.,
      13808., 14544., 12456., 13200., 13944., 14688., 12576., 13328., 14080.,
      14832., 12696., 13456., 14216., 14976., 12816., 13584., 14352., 15120.,
      12936., 13712., 14488., 15264., 13056., 13840., 14624., 15408., 13176.,
      13968., 14760., 15552., 13296., 14096., 14896., 15696., 13416., 14224.,
      15032., 15840., 13536., 14352., 15168., 15984., 13656., 14480., 15304.,
      16128., 14016., 14864., 15712., 16560., 14136., 14992., 15848., 16704.,
      14256., 15120., 15984., 16848., 14376., 15248., 16120., 16992., 14496.,
      15376., 16256., 17136., 14616., 15504., 16392., 17280., 14736., 15632.,
      16528., 17424., 14856., 15760., 16664., 17568., 14976., 15888., 16800.,
      17712., 15096., 16016., 16936., 17856., 15216., 16144., 17072., 18000.,
      15336., 16272., 17208., 18144., 15456., 16400., 17344., 18288., 15576.,
      16528., 17480., 18432., 15936., 16912., 17888., 18864., 16056., 17040.,
      18024., 19008., 16176., 17168., 18160., 19152., 16296., 17296., 18296.,
      19296., 16416., 17424., 18432., 19440., 16536., 17552., 18568., 19584.,
      16656., 17680., 18704., 19728., 16776., 17808., 18840., 19872., 16896.,
      17936., 18976., 20016., 17016., 18064., 19112., 20160., 17136., 18192.,
      19248., 20304., 17256., 18320., 19384., 20448., 17376., 18448., 19520.,
      20592., 17496., 18576., 19656., 20736.};
  const std::array<int, 4> in_shape = {{1, 10, 8, 2}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, SAME1x10x8x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      234570., 236460., 238350., 240240., 283927., 286174., 288421., 290668.,
      334033., 336630., 339227., 341824., 384860., 387800., 390740., 393680.,
      338884., 341432., 343980., 346528., 292243., 294406., 296569., 298732.,
      244965., 246750., 248535., 250320., 296080., 298080., 300080., 302080.,
      357320., 359696., 362072., 364448., 419160., 421904., 424648., 427392.,
      481568., 484672., 487776., 490880., 422912., 425600., 428288., 430976.,
      363752., 366032., 368312., 370592., 304120., 306000., 307880., 309760.,
      360750., 362820., 364890., 366960., 434313., 436770., 439227., 441684.,
      508263., 511098., 513933., 516768., 582564., 585768., 588972., 592176.,
      510468., 513240., 516012., 518784., 438093., 440442., 442791., 445140.,
      365475., 367410., 369345., 371280., 427300., 429400., 431500., 433600.,
      513370., 515860., 518350., 520840., 599550., 602420., 605290., 608160.,
      685800., 689040., 692280., 695520., 599760., 602560., 605360., 608160.,
      513730., 516100., 518470., 520840., 427750., 429700., 431650., 433600.,
      366150., 367860., 369570., 371280., 439065., 441090., 443115., 445140.,
      511791., 514122., 516453., 518784., 584292., 586920., 589548., 592176.,
      509964., 512232., 514500., 516768., 435933., 437850., 439767., 441684.,
      362235., 363810., 365385., 366960., 305680., 307040., 308400., 309760.,
      365768., 367376., 368984., 370592., 425432., 427280., 429128., 430976.,
      484640., 486720., 488800., 490880., 422016., 423808., 425600., 427392.,
      359912., 361424., 362936., 364448., 298360., 299600., 300840., 302080.,
      247170., 248220., 249270., 250320., 295015., 296254., 297493., 298732.,
      342265., 343686., 345107., 346528., 388892., 390488., 392084., 393680.,
      337708., 339080., 340452., 341824., 287203., 288358., 289513., 290668.,
      237405., 238350., 239295., 240240.};
  const std::array<int, 4> in_shape = {{1, 10, 8, 4}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, VALID1x10x8x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      2484.,  2520.,  2556.,  2592.,  2628.,  2664.,  2700.,  2736.,  2772.,
      2808.,  2844.,  2880.,  2916.,  2952.,  2988.,  3024.,  3060.,  3096.,
      3132.,  3168.,  3204.,  3240.,  3276.,  3312.,  3348.,  3384.,  3420.,
      3456.,  3636.,  3672.,  3708.,  3744.,  3780.,  3816.,  3852.,  3888.,
      3924.,  3960.,  3996.,  4032.,  4068.,  4104.,  4140.,  4176.,  4212.,
      4248.,  4284.,  4320.,  4356.,  4392.,  4428.,  4464.,  4500.,  4536.,
      4572.,  4608.,  4788.,  4824.,  4860.,  4896.,  4932.,  4968.,  5004.,
      5040.,  5076.,  5112.,  5148.,  5184.,  5220.,  5256.,  5292.,  5328.,
      5364.,  5400.,  5436.,  5472.,  5508.,  5544.,  5580.,  5616.,  5652.,
      5688.,  5724.,  5760.,  5940.,  5976.,  6012.,  6048.,  6084.,  6120.,
      6156.,  6192.,  6228.,  6264.,  6300.,  6336.,  6372.,  6408.,  6444.,
      6480.,  6516.,  6552.,  6588.,  6624.,  6660.,  6696.,  6732.,  6768.,
      6804.,  6840.,  6876.,  6912.,  7092.,  7128.,  7164.,  7200.,  7236.,
      7272.,  7308.,  7344.,  7380.,  7416.,  7452.,  7488.,  7524.,  7560.,
      7596.,  7632.,  7668.,  7704.,  7740.,  7776.,  7812.,  7848.,  7884.,
      7920.,  7956.,  7992.,  8028.,  8064.,  8244.,  8280.,  8316.,  8352.,
      8388.,  8424.,  8460.,  8496.,  8532.,  8568.,  8604.,  8640.,  8676.,
      8712.,  8748.,  8784.,  8820.,  8856.,  8892.,  8928.,  8964.,  9000.,
      9036.,  9072.,  9108.,  9144.,  9180.,  9216.,  9396.,  9432.,  9468.,
      9504.,  9540.,  9576.,  9612.,  9648.,  9684.,  9720.,  9756.,  9792.,
      9828.,  9864.,  9900.,  9936.,  9972.,  10008., 10044., 10080., 10116.,
      10152., 10188., 10224., 10260., 10296., 10332., 10368.};
  const std::array<int, 4> in_shape = {{1, 10, 8, 4}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, SAME1x10x8x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      465465.,  469140.,  469210.,  472920.,  472955.,  476700.,  476700.,
      480480.,  563360.,  567854.,  567812.,  572348.,  572264.,  576842.,
      576716.,  581336.,  662725.,  668066.,  667870.,  673260.,  673015.,
      678454.,  678160.,  683648.,  763504.,  769720.,  769328.,  775600.,
      775152.,  781480.,  780976.,  787360.,  672231.,  677768.,  677278.,
      682864.,  682325.,  687960.,  687372.,  693056.,  579656.,  584486.,
      583940.,  588812.,  588224.,  593138.,  592508.,  597464.,  485835.,
      489930.,  489370.,  493500.,  492905.,  497070.,  496440.,  500640.,
      587320.,  592160.,  591280.,  596160.,  595240.,  600160.,  599200.,
      604160.,  708736.,  714640.,  713440.,  719392.,  718144.,  724144.,
      722848.,  728896.,  831320.,  838320.,  836752.,  843808.,  842184.,
      849296.,  847616.,  854784.,  955008.,  963136.,  961152.,  969344.,
      967296.,  975552.,  973440.,  981760.,  838600.,  845824.,  843920.,
      851200.,  849240.,  856576.,  854560.,  861952.,  721216.,  727504.,
      725728.,  732064.,  730240.,  736624.,  734752.,  741184.,  602920.,
      608240.,  606640.,  612000.,  610360.,  615760.,  614080.,  619520.,
      715335.,  721500.,  719430.,  725640.,  723525.,  729780.,  727620.,
      733920.,  861120.,  868626.,  865980.,  873540.,  870840.,  878454.,
      875700.,  883368.,  1007643., 1016526., 1013250., 1022196., 1018857.,
      1027866., 1024464., 1033536., 1154832., 1165128., 1161168., 1171536.,
      1167504., 1177944., 1173840., 1184352., 1011801., 1020936., 1017282.,
      1026480., 1022763., 1032024., 1028244., 1037568., 868248.,  876186.,
      872892.,  880884.,  877536.,  885582.,  882180.,  890280.,  724245.,
      730950.,  728070.,  734820.,  731895.,  738690.,  735720.,  742560.,
      846950.,  854600.,  851100.,  858800.,  855250.,  863000.,  859400.,
      867200.,  1017440., 1026740., 1022360., 1031720., 1027280., 1036700.,
      1032200., 1041680., 1188110., 1199100., 1193780., 1204840., 1199450.,
      1210580., 1205120., 1216320., 1358880., 1371600., 1365280., 1378080.,
      1371680., 1384560., 1378080., 1391040., 1188250., 1199520., 1193780.,
      1205120., 1199310., 1210720., 1204840., 1216320., 1017680., 1027460.,
      1022360., 1032200., 1027040., 1036940., 1031720., 1041680., 847250.,
      855500.,  851100.,  859400.,  854950.,  863300.,  858800.,  867200.,
      724695.,  732300.,  728070.,  735720.,  731445.,  739140.,  734820.,
      742560.,  868896.,  878130.,  872892.,  882180.,  876888.,  886230.,
      880884.,  890280.,  1012683., 1023582., 1017282., 1028244., 1021881.,
      1032906., 1026480., 1037568., 1155984., 1168584., 1161168., 1173840.,
      1166352., 1179096., 1171536., 1184352., 1008777., 1019928., 1013250.,
      1024464., 1017723., 1029000., 1022196., 1033536., 862200.,  871866.,
      865980.,  875700.,  869760.,  879534.,  873540.,  883368.,  716325.,
      724470.,  719430.,  727620.,  722535.,  730770.,  725640.,  733920.,
      603960.,  611360.,  606640.,  614080.,  609320.,  616800.,  612000.,
      619520.,  722560.,  731536.,  725728.,  734752.,  728896.,  737968.,
      732064.,  741184.,  840280.,  850864.,  843920.,  854560.,  847560.,
      858256.,  851200.,  861952.,  957056.,  969280.,  961152.,  973440.,
      965248.,  977600.,  969344.,  981760.,  833224.,  844032.,  836752.,
      847616.,  840280.,  851200.,  843808.,  854784.,  710464.,  719824.,
      713440.,  722848.,  716416.,  725872.,  719392.,  728896.,  588840.,
      596720.,  591280.,  599200.,  593720.,  601680.,  596160.,  604160.,
      487305.,  494340.,  489370.,  496440.,  491435.,  498540.,  493500.,
      500640.,  581504.,  590030.,  583940.,  592508.,  586376.,  594986.,
      588812.,  597464.,  674485.,  684530.,  677278.,  687372.,  680071.,
      690214.,  682864.,  693056.,  766192.,  777784.,  769328.,  780976.,
      772464.,  784168.,  775600.,  787360.,  665175.,  675416.,  667870.,
      678160.,  670565.,  680904.,  673260.,  683648.,  565544.,  574406.,
      567812.,  576716.,  570080.,  579026.,  572348.,  581336.,  467355.,
      474810.,  469210.,  476700.,  471065.,  478590.,  472920.,  480480.};
  const std::array<int, 4> in_shape = {{1, 10, 8, 4}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, VALID1x10x8x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      4560.,  4968.,  4624.,  5040.,  4688.,  5112.,  4752.,  5184.,  4816.,
      5256.,  4880.,  5328.,  4944.,  5400.,  5008.,  5472.,  5072.,  5544.,
      5136.,  5616.,  5200.,  5688.,  5264.,  5760.,  5328.,  5832.,  5392.,
      5904.,  5456.,  5976.,  5520.,  6048.,  5584.,  6120.,  5648.,  6192.,
      5712.,  6264.,  5776.,  6336.,  5840.,  6408.,  5904.,  6480.,  5968.,
      6552.,  6032.,  6624.,  6096.,  6696.,  6160.,  6768.,  6224.,  6840.,
      6288.,  6912.,  6608.,  7272.,  6672.,  7344.,  6736.,  7416.,  6800.,
      7488.,  6864.,  7560.,  6928.,  7632.,  6992.,  7704.,  7056.,  7776.,
      7120.,  7848.,  7184.,  7920.,  7248.,  7992.,  7312.,  8064.,  7376.,
      8136.,  7440.,  8208.,  7504.,  8280.,  7568.,  8352.,  7632.,  8424.,
      7696.,  8496.,  7760.,  8568.,  7824.,  8640.,  7888.,  8712.,  7952.,
      8784.,  8016.,  8856.,  8080.,  8928.,  8144.,  9000.,  8208.,  9072.,
      8272.,  9144.,  8336.,  9216.,  8656.,  9576.,  8720.,  9648.,  8784.,
      9720.,  8848.,  9792.,  8912.,  9864.,  8976.,  9936.,  9040.,  10008.,
      9104.,  10080., 9168.,  10152., 9232.,  10224., 9296.,  10296., 9360.,
      10368., 9424.,  10440., 9488.,  10512., 9552.,  10584., 9616.,  10656.,
      9680.,  10728., 9744.,  10800., 9808.,  10872., 9872.,  10944., 9936.,
      11016., 10000., 11088., 10064., 11160., 10128., 11232., 10192., 11304.,
      10256., 11376., 10320., 11448., 10384., 11520., 10704., 11880., 10768.,
      11952., 10832., 12024., 10896., 12096., 10960., 12168., 11024., 12240.,
      11088., 12312., 11152., 12384., 11216., 12456., 11280., 12528., 11344.,
      12600., 11408., 12672., 11472., 12744., 11536., 12816., 11600., 12888.,
      11664., 12960., 11728., 13032., 11792., 13104., 11856., 13176., 11920.,
      13248., 11984., 13320., 12048., 13392., 12112., 13464., 12176., 13536.,
      12240., 13608., 12304., 13680., 12368., 13752., 12432., 13824., 12752.,
      14184., 12816., 14256., 12880., 14328., 12944., 14400., 13008., 14472.,
      13072., 14544., 13136., 14616., 13200., 14688., 13264., 14760., 13328.,
      14832., 13392., 14904., 13456., 14976., 13520., 15048., 13584., 15120.,
      13648., 15192., 13712., 15264., 13776., 15336., 13840., 15408., 13904.,
      15480., 13968., 15552., 14032., 15624., 14096., 15696., 14160., 15768.,
      14224., 15840., 14288., 15912., 14352., 15984., 14416., 16056., 14480.,
      16128., 14800., 16488., 14864., 16560., 14928., 16632., 14992., 16704.,
      15056., 16776., 15120., 16848., 15184., 16920., 15248., 16992., 15312.,
      17064., 15376., 17136., 15440., 17208., 15504., 17280., 15568., 17352.,
      15632., 17424., 15696., 17496., 15760., 17568., 15824., 17640., 15888.,
      17712., 15952., 17784., 16016., 17856., 16080., 17928., 16144., 18000.,
      16208., 18072., 16272., 18144., 16336., 18216., 16400., 18288., 16464.,
      18360., 16528., 18432., 16848., 18792., 16912., 18864., 16976., 18936.,
      17040., 19008., 17104., 19080., 17168., 19152., 17232., 19224., 17296.,
      19296., 17360., 19368., 17424., 19440., 17488., 19512., 17552., 19584.,
      17616., 19656., 17680., 19728., 17744., 19800., 17808., 19872., 17872.,
      19944., 17936., 20016., 18000., 20088., 18064., 20160., 18128., 20232.,
      18192., 20304., 18256., 20376., 18320., 20448., 18384., 20520., 18448.,
      20592., 18512., 20664., 18576., 20736.};
  const std::array<int, 4> in_shape = {{1, 10, 8, 4}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, SAME1x10x8x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      927255.,  930930.,  934605.,  938280.,  934710.,  938420.,  942130.,
      945840.,  942165.,  945910.,  949655.,  953400.,  949620.,  953400.,
      957180.,  960960.,  1122226., 1126720., 1131214., 1135708., 1131088.,
      1135624., 1140160., 1144696., 1139950., 1144528., 1149106., 1153684.,
      1148812., 1153432., 1158052., 1162672., 1320109., 1325450., 1330791.,
      1336132., 1330350., 1335740., 1341130., 1346520., 1340591., 1346030.,
      1351469., 1356908., 1350832., 1356320., 1361808., 1367296., 1520792.,
      1527008., 1533224., 1539440., 1532384., 1538656., 1544928., 1551200.,
      1543976., 1550304., 1556632., 1562960., 1555568., 1561952., 1568336.,
      1574720., 1338925., 1344462., 1349999., 1355536., 1348970., 1354556.,
      1360142., 1365728., 1359015., 1364650., 1370285., 1375920., 1369060.,
      1374744., 1380428., 1386112., 1154482., 1159312., 1164142., 1168972.,
      1163008., 1167880., 1172752., 1177624., 1171534., 1176448., 1181362.,
      1186276., 1180060., 1185016., 1189972., 1194928., 967575.,  971670.,
      975765.,  979860.,  974610.,  978740.,  982870.,  987000.,  981645.,
      985810.,  989975.,  994140.,  988680.,  992880.,  997080.,  1001280.,
      1169800., 1174640., 1179480., 1184320., 1177680., 1182560., 1187440.,
      1192320., 1185560., 1190480., 1195400., 1200320., 1193440., 1198400.,
      1203360., 1208320., 1411568., 1417472., 1423376., 1429280., 1420928.,
      1426880., 1432832., 1438784., 1430288., 1436288., 1442288., 1448288.,
      1439648., 1445696., 1451744., 1457792., 1655640., 1662640., 1669640.,
      1676640., 1666448., 1673504., 1680560., 1687616., 1677256., 1684368.,
      1691480., 1698592., 1688064., 1695232., 1702400., 1709568., 1901888.,
      1910016., 1918144., 1926272., 1914112., 1922304., 1930496., 1938688.,
      1926336., 1934592., 1942848., 1951104., 1938560., 1946880., 1955200.,
      1963520., 1669976., 1677200., 1684424., 1691648., 1680560., 1687840.,
      1695120., 1702400., 1691144., 1698480., 1705816., 1713152., 1701728.,
      1709120., 1716512., 1723904., 1436144., 1442432., 1448720., 1455008.,
      1445120., 1451456., 1457792., 1464128., 1454096., 1460480., 1466864.,
      1473248., 1463072., 1469504., 1475936., 1482368., 1200520., 1205840.,
      1211160., 1216480., 1207920., 1213280., 1218640., 1224000., 1215320.,
      1220720., 1226120., 1231520., 1222720., 1228160., 1233600., 1239040.,
      1424505., 1430670., 1436835., 1443000., 1432650., 1438860., 1445070.,
      1451280., 1440795., 1447050., 1453305., 1459560., 1448940., 1455240.,
      1461540., 1467840., 1714734., 1722240., 1729746., 1737252., 1724400.,
      1731960., 1739520., 1747080., 1734066., 1741680., 1749294., 1756908.,
      1743732., 1751400., 1759068., 1766736., 2006403., 2015286., 2024169.,
      2033052., 2017554., 2026500., 2035446., 2044392., 2028705., 2037714.,
      2046723., 2055732., 2039856., 2048928., 2058000., 2067072., 2299368.,
      2309664., 2319960., 2330256., 2311968., 2322336., 2332704., 2343072.,
      2324568., 2335008., 2345448., 2355888., 2337168., 2347680., 2358192.,
      2368704., 2014467., 2023602., 2032737., 2041872., 2025366., 2034564.,
      2043762., 2052960., 2036265., 2045526., 2054787., 2064048., 2047164.,
      2056488., 2065812., 2075136., 1728558., 1736496., 1744434., 1752372.,
      1737792., 1745784., 1753776., 1761768., 1747026., 1755072., 1763118.,
      1771164., 1756260., 1764360., 1772460., 1780560., 1441785., 1448490.,
      1455195., 1461900., 1449390., 1456140., 1462890., 1469640., 1456995.,
      1463790., 1470585., 1477380., 1464600., 1471440., 1478280., 1485120.,
      1686250., 1693900., 1701550., 1709200., 1694500., 1702200., 1709900.,
      1717600., 1702750., 1710500., 1718250., 1726000., 1711000., 1718800.,
      1726600., 1734400., 2025580., 2034880., 2044180., 2053480., 2035360.,
      2044720., 2054080., 2063440., 2045140., 2054560., 2063980., 2073400.,
      2054920., 2064400., 2073880., 2083360., 2365230., 2376220., 2387210.,
      2398200., 2376500., 2387560., 2398620., 2409680., 2387770., 2398900.,
      2410030., 2421160., 2399040., 2410240., 2421440., 2432640., 2705040.,
      2717760., 2730480., 2743200., 2717760., 2730560., 2743360., 2756160.,
      2730480., 2743360., 2756240., 2769120., 2743200., 2756160., 2769120.,
      2782080., 2365230., 2376500., 2387770., 2399040., 2376220., 2387560.,
      2398900., 2410240., 2387210., 2398620., 2410030., 2421440., 2398200.,
      2409680., 2421160., 2432640., 2025580., 2035360., 2045140., 2054920.,
      2034880., 2044720., 2054560., 2064400., 2044180., 2054080., 2063980.,
      2073880., 2053480., 2063440., 2073400., 2083360., 1686250., 1694500.,
      1702750., 1711000., 1693900., 1702200., 1710500., 1718800., 1701550.,
      1709900., 1718250., 1726600., 1709200., 1717600., 1726000., 1734400.,
      1441785., 1449390., 1456995., 1464600., 1448490., 1456140., 1463790.,
      1471440., 1455195., 1462890., 1470585., 1478280., 1461900., 1469640.,
      1477380., 1485120., 1728558., 1737792., 1747026., 1756260., 1736496.,
      1745784., 1755072., 1764360., 1744434., 1753776., 1763118., 1772460.,
      1752372., 1761768., 1771164., 1780560., 2014467., 2025366., 2036265.,
      2047164., 2023602., 2034564., 2045526., 2056488., 2032737., 2043762.,
      2054787., 2065812., 2041872., 2052960., 2064048., 2075136., 2299368.,
      2311968., 2324568., 2337168., 2309664., 2322336., 2335008., 2347680.,
      2319960., 2332704., 2345448., 2358192., 2330256., 2343072., 2355888.,
      2368704., 2006403., 2017554., 2028705., 2039856., 2015286., 2026500.,
      2037714., 2048928., 2024169., 2035446., 2046723., 2058000., 2033052.,
      2044392., 2055732., 2067072., 1714734., 1724400., 1734066., 1743732.,
      1722240., 1731960., 1741680., 1751400., 1729746., 1739520., 1749294.,
      1759068., 1737252., 1747080., 1756908., 1766736., 1424505., 1432650.,
      1440795., 1448940., 1430670., 1438860., 1447050., 1455240., 1436835.,
      1445070., 1453305., 1461540., 1443000., 1451280., 1459560., 1467840.,
      1200520., 1207920., 1215320., 1222720., 1205840., 1213280., 1220720.,
      1228160., 1211160., 1218640., 1226120., 1233600., 1216480., 1224000.,
      1231520., 1239040., 1436144., 1445120., 1454096., 1463072., 1442432.,
      1451456., 1460480., 1469504., 1448720., 1457792., 1466864., 1475936.,
      1455008., 1464128., 1473248., 1482368., 1669976., 1680560., 1691144.,
      1701728., 1677200., 1687840., 1698480., 1709120., 1684424., 1695120.,
      1705816., 1716512., 1691648., 1702400., 1713152., 1723904., 1901888.,
      1914112., 1926336., 1938560., 1910016., 1922304., 1934592., 1946880.,
      1918144., 1930496., 1942848., 1955200., 1926272., 1938688., 1951104.,
      1963520., 1655640., 1666448., 1677256., 1688064., 1662640., 1673504.,
      1684368., 1695232., 1669640., 1680560., 1691480., 1702400., 1676640.,
      1687616., 1698592., 1709568., 1411568., 1420928., 1430288., 1439648.,
      1417472., 1426880., 1436288., 1445696., 1423376., 1432832., 1442288.,
      1451744., 1429280., 1438784., 1448288., 1457792., 1169800., 1177680.,
      1185560., 1193440., 1174640., 1182560., 1190480., 1198400., 1179480.,
      1187440., 1195400., 1203360., 1184320., 1192320., 1200320., 1208320.,
      967575.,  974610.,  981645.,  988680.,  971670.,  978740.,  985810.,
      992880.,  975765.,  982870.,  989975.,  997080.,  979860.,  987000.,
      994140.,  1001280., 1154482., 1163008., 1171534., 1180060., 1159312.,
      1167880., 1176448., 1185016., 1164142., 1172752., 1181362., 1189972.,
      1168972., 1177624., 1186276., 1194928., 1338925., 1348970., 1359015.,
      1369060., 1344462., 1354556., 1364650., 1374744., 1349999., 1360142.,
      1370285., 1380428., 1355536., 1365728., 1375920., 1386112., 1520792.,
      1532384., 1543976., 1555568., 1527008., 1538656., 1550304., 1561952.,
      1533224., 1544928., 1556632., 1568336., 1539440., 1551200., 1562960.,
      1574720., 1320109., 1330350., 1340591., 1350832., 1325450., 1335740.,
      1346030., 1356320., 1330791., 1341130., 1351469., 1361808., 1336132.,
      1346520., 1356908., 1367296., 1122226., 1131088., 1139950., 1148812.,
      1126720., 1135624., 1144528., 1153432., 1131214., 1140160., 1149106.,
      1158052., 1135708., 1144696., 1153684., 1162672., 927255.,  934710.,
      942165.,  949620.,  930930.,  938420.,  945910.,  953400.,  934605.,
      942130.,  949655.,  957180.,  938280.,  945840.,  953400.,  960960.};
  const std::array<int, 4> in_shape = {{1, 10, 8, 4}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, VALID1x10x8x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      8712.,  9120.,  9528.,  9936.,  8832.,  9248.,  9664.,  10080., 8952.,
      9376.,  9800.,  10224., 9072.,  9504.,  9936.,  10368., 9192.,  9632.,
      10072., 10512., 9312.,  9760.,  10208., 10656., 9432.,  9888.,  10344.,
      10800., 9552.,  10016., 10480., 10944., 9672.,  10144., 10616., 11088.,
      9792.,  10272., 10752., 11232., 9912.,  10400., 10888., 11376., 10032.,
      10528., 11024., 11520., 10152., 10656., 11160., 11664., 10272., 10784.,
      11296., 11808., 10392., 10912., 11432., 11952., 10512., 11040., 11568.,
      12096., 10632., 11168., 11704., 12240., 10752., 11296., 11840., 12384.,
      10872., 11424., 11976., 12528., 10992., 11552., 12112., 12672., 11112.,
      11680., 12248., 12816., 11232., 11808., 12384., 12960., 11352., 11936.,
      12520., 13104., 11472., 12064., 12656., 13248., 11592., 12192., 12792.,
      13392., 11712., 12320., 12928., 13536., 11832., 12448., 13064., 13680.,
      11952., 12576., 13200., 13824., 12552., 13216., 13880., 14544., 12672.,
      13344., 14016., 14688., 12792., 13472., 14152., 14832., 12912., 13600.,
      14288., 14976., 13032., 13728., 14424., 15120., 13152., 13856., 14560.,
      15264., 13272., 13984., 14696., 15408., 13392., 14112., 14832., 15552.,
      13512., 14240., 14968., 15696., 13632., 14368., 15104., 15840., 13752.,
      14496., 15240., 15984., 13872., 14624., 15376., 16128., 13992., 14752.,
      15512., 16272., 14112., 14880., 15648., 16416., 14232., 15008., 15784.,
      16560., 14352., 15136., 15920., 16704., 14472., 15264., 16056., 16848.,
      14592., 15392., 16192., 16992., 14712., 15520., 16328., 17136., 14832.,
      15648., 16464., 17280., 14952., 15776., 16600., 17424., 15072., 15904.,
      16736., 17568., 15192., 16032., 16872., 17712., 15312., 16160., 17008.,
      17856., 15432., 16288., 17144., 18000., 15552., 16416., 17280., 18144.,
      15672., 16544., 17416., 18288., 15792., 16672., 17552., 18432., 16392.,
      17312., 18232., 19152., 16512., 17440., 18368., 19296., 16632., 17568.,
      18504., 19440., 16752., 17696., 18640., 19584., 16872., 17824., 18776.,
      19728., 16992., 17952., 18912., 19872., 17112., 18080., 19048., 20016.,
      17232., 18208., 19184., 20160., 17352., 18336., 19320., 20304., 17472.,
      18464., 19456., 20448., 17592., 18592., 19592., 20592., 17712., 18720.,
      19728., 20736., 17832., 18848., 19864., 20880., 17952., 18976., 20000.,
      21024., 18072., 19104., 20136., 21168., 18192., 19232., 20272., 21312.,
      18312., 19360., 20408., 21456., 18432., 19488., 20544., 21600., 18552.,
      19616., 20680., 21744., 18672., 19744., 20816., 21888., 18792., 19872.,
      20952., 22032., 18912., 20000., 21088., 22176., 19032., 20128., 21224.,
      22320., 19152., 20256., 21360., 22464., 19272., 20384., 21496., 22608.,
      19392., 20512., 21632., 22752., 19512., 20640., 21768., 22896., 19632.,
      20768., 21904., 23040., 20232., 21408., 22584., 23760., 20352., 21536.,
      22720., 23904., 20472., 21664., 22856., 24048., 20592., 21792., 22992.,
      24192., 20712., 21920., 23128., 24336., 20832., 22048., 23264., 24480.,
      20952., 22176., 23400., 24624., 21072., 22304., 23536., 24768., 21192.,
      22432., 23672., 24912., 21312., 22560., 23808., 25056., 21432., 22688.,
      23944., 25200., 21552., 22816., 24080., 25344., 21672., 22944., 24216.,
      25488., 21792., 23072., 24352., 25632., 21912., 23200., 24488., 25776.,
      22032., 23328., 24624., 25920., 22152., 23456., 24760., 26064., 22272.,
      23584., 24896., 26208., 22392., 23712., 25032., 26352., 22512., 23840.,
      25168., 26496., 22632., 23968., 25304., 26640., 22752., 24096., 25440.,
      26784., 22872., 24224., 25576., 26928., 22992., 24352., 25712., 27072.,
      23112., 24480., 25848., 27216., 23232., 24608., 25984., 27360., 23352.,
      24736., 26120., 27504., 23472., 24864., 26256., 27648., 24072., 25504.,
      26936., 28368., 24192., 25632., 27072., 28512., 24312., 25760., 27208.,
      28656., 24432., 25888., 27344., 28800., 24552., 26016., 27480., 28944.,
      24672., 26144., 27616., 29088., 24792., 26272., 27752., 29232., 24912.,
      26400., 27888., 29376., 25032., 26528., 28024., 29520., 25152., 26656.,
      28160., 29664., 25272., 26784., 28296., 29808., 25392., 26912., 28432.,
      29952., 25512., 27040., 28568., 30096., 25632., 27168., 28704., 30240.,
      25752., 27296., 28840., 30384., 25872., 27424., 28976., 30528., 25992.,
      27552., 29112., 30672., 26112., 27680., 29248., 30816., 26232., 27808.,
      29384., 30960., 26352., 27936., 29520., 31104., 26472., 28064., 29656.,
      31248., 26592., 28192., 29792., 31392., 26712., 28320., 29928., 31536.,
      26832., 28448., 30064., 31680., 26952., 28576., 30200., 31824., 27072.,
      28704., 30336., 31968., 27192., 28832., 30472., 32112., 27312., 28960.,
      30608., 32256., 27912., 29600., 31288., 32976., 28032., 29728., 31424.,
      33120., 28152., 29856., 31560., 33264., 28272., 29984., 31696., 33408.,
      28392., 30112., 31832., 33552., 28512., 30240., 31968., 33696., 28632.,
      30368., 32104., 33840., 28752., 30496., 32240., 33984., 28872., 30624.,
      32376., 34128., 28992., 30752., 32512., 34272., 29112., 30880., 32648.,
      34416., 29232., 31008., 32784., 34560., 29352., 31136., 32920., 34704.,
      29472., 31264., 33056., 34848., 29592., 31392., 33192., 34992., 29712.,
      31520., 33328., 35136., 29832., 31648., 33464., 35280., 29952., 31776.,
      33600., 35424., 30072., 31904., 33736., 35568., 30192., 32032., 33872.,
      35712., 30312., 32160., 34008., 35856., 30432., 32288., 34144., 36000.,
      30552., 32416., 34280., 36144., 30672., 32544., 34416., 36288., 30792.,
      32672., 34552., 36432., 30912., 32800., 34688., 36576., 31032., 32928.,
      34824., 36720., 31152., 33056., 34960., 36864., 31752., 33696., 35640.,
      37584., 31872., 33824., 35776., 37728., 31992., 33952., 35912., 37872.,
      32112., 34080., 36048., 38016., 32232., 34208., 36184., 38160., 32352.,
      34336., 36320., 38304., 32472., 34464., 36456., 38448., 32592., 34592.,
      36592., 38592., 32712., 34720., 36728., 38736., 32832., 34848., 36864.,
      38880., 32952., 34976., 37000., 39024., 33072., 35104., 37136., 39168.,
      33192., 35232., 37272., 39312., 33312., 35360., 37408., 39456., 33432.,
      35488., 37544., 39600., 33552., 35616., 37680., 39744., 33672., 35744.,
      37816., 39888., 33792., 35872., 37952., 40032., 33912., 36000., 38088.,
      40176., 34032., 36128., 38224., 40320., 34152., 36256., 38360., 40464.,
      34272., 36384., 38496., 40608., 34392., 36512., 38632., 40752., 34512.,
      36640., 38768., 40896., 34632., 36768., 38904., 41040., 34752., 36896.,
      39040., 41184., 34872., 37024., 39176., 41328., 34992., 37152., 39312.,
      41472.};
  const std::array<int, 4> in_shape = {{1, 10, 8, 4}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, SAME1x10x9x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      91231.,  107212., 123396., 139776., 124908., 109858., 94633.,
      114632., 134372., 154272., 174324., 155424., 136388., 117224.,
      139167., 162792., 186516., 210330., 187164., 163926., 140625.,
      164350., 191905., 219480., 247065., 219480., 191905., 164350.,
      140625., 163926., 187164., 210330., 186516., 162792., 139167.,
      117224., 136388., 155424., 174324., 154272., 134372., 114632.,
      94633.,  109858., 124908., 139776., 123396., 107212., 91231.};
  const std::array<int, 4> in_shape = {{1, 10, 9, 1}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, VALID1x10x9x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1622., 1700., 1778., 1856., 1934., 2012., 2090., 2324., 2402., 2480.,
      2558., 2636., 2714., 2792., 3026., 3104., 3182., 3260., 3338., 3416.,
      3494., 3728., 3806., 3884., 3962., 4040., 4118., 4196., 4430., 4508.,
      4586., 4664., 4742., 4820., 4898., 5132., 5210., 5288., 5366., 5444.,
      5522., 5600., 5834., 5912., 5990., 6068., 6146., 6224., 6302.};
  const std::array<int, 4> in_shape = {{1, 10, 9, 1}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, SAME1x10x9x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      181181., 182462., 212905., 214424., 245028., 246792., 277536., 279552.,
      247996., 249816., 218099., 219716., 187859., 189266., 227584., 229264.,
      266756., 268744., 306240., 308544., 346020., 348648., 308480., 310848.,
      270676., 272776., 232624., 234448., 276201., 278334., 323064., 325584.,
      370116., 373032., 417339., 420660., 371340., 374328., 325206., 327852.,
      278955., 281250., 326060., 328700., 380695., 383810., 435360., 438960.,
      490035., 494130., 435280., 438960., 380555., 383810., 325880., 328700.,
      278631., 281250., 324765., 327852., 370764., 374328., 416610., 420660.,
      369396., 373032., 322371., 325584., 275553., 278334., 231904., 234448.,
      269780., 272776., 307392., 310848., 344724., 348648., 305024., 308544.,
      265636., 268744., 226576., 229264., 186851., 189266., 216874., 219716.,
      246540., 249816., 275835., 279552., 243460., 246792., 211484., 214424.,
      179921., 182462.};
  const std::array<int, 4> in_shape = {{1, 10, 9, 1}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, VALID1x10x9x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      3058.,  3244.,  3202.,  3400.,  3346.,  3556.,  3490.,  3712.,  3634.,
      3868.,  3778.,  4024.,  3922.,  4180.,  4354.,  4648.,  4498.,  4804.,
      4642.,  4960.,  4786.,  5116.,  4930.,  5272.,  5074.,  5428.,  5218.,
      5584.,  5650.,  6052.,  5794.,  6208.,  5938.,  6364.,  6082.,  6520.,
      6226.,  6676.,  6370.,  6832.,  6514.,  6988.,  6946.,  7456.,  7090.,
      7612.,  7234.,  7768.,  7378.,  7924.,  7522.,  8080.,  7666.,  8236.,
      7810.,  8392.,  8242.,  8860.,  8386.,  9016.,  8530.,  9172.,  8674.,
      9328.,  8818.,  9484.,  8962.,  9640.,  9106.,  9796.,  9538.,  10264.,
      9682.,  10420., 9826.,  10576., 9970.,  10732., 10114., 10888., 10258.,
      11044., 10402., 11200., 10834., 11668., 10978., 11824., 11122., 11980.,
      11266., 12136., 11410., 12292., 11554., 12448., 11698., 12604.};
  const std::array<int, 4> in_shape = {{1, 10, 9, 1}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, SAME1x10x9x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      361081., 362362., 363643., 364924., 424291., 425810., 427329., 428848.,
      488292., 490056., 491820., 493584., 553056., 555072., 557088., 559104.,
      494172., 495992., 497812., 499632., 434581., 436198., 437815., 439432.,
      374311., 375718., 377125., 378532., 453488., 455168., 456848., 458528.,
      531524., 533512., 535500., 537488., 610176., 612480., 614784., 617088.,
      689412., 692040., 694668., 697296., 614592., 616960., 619328., 621696.,
      539252., 541352., 543452., 545552., 463424., 465248., 467072., 468896.,
      550269., 552402., 554535., 556668., 643608., 646128., 648648., 651168.,
      737316., 740232., 743148., 746064., 831357., 834678., 837999., 841320.,
      739692., 742680., 745668., 748656., 647766., 650412., 653058., 655704.,
      555615., 557910., 560205., 562500., 649480., 652120., 654760., 657400.,
      758275., 761390., 764505., 767620., 867120., 870720., 874320., 877920.,
      975975., 980070., 984165., 988260., 866880., 870560., 874240., 877920.,
      757855., 761110., 764365., 767620., 648940., 651760., 654580., 657400.,
      554643., 557262., 559881., 562500., 646443., 649530., 652617., 655704.,
      737964., 741528., 745092., 748656., 829170., 833220., 837270., 841320.,
      735156., 738792., 742428., 746064., 641529., 644742., 647955., 651168.,
      548325., 551106., 553887., 556668., 461264., 463808., 466352., 468896.,
      536564., 539560., 542556., 545552., 611328., 614784., 618240., 621696.,
      685524., 689448., 693372., 697296., 606528., 610048., 613568., 617088.,
      528164., 531272., 534380., 537488., 450464., 453152., 455840., 458528.,
      371287., 373702., 376117., 378532., 430906., 433748., 436590., 439432.,
      489804., 493080., 496356., 499632., 547953., 551670., 555387., 559104.,
      483588., 486920., 490252., 493584., 420028., 422968., 425908., 428848.,
      357301., 359842., 362383., 364924.};
  const std::array<int, 4> in_shape = {{1, 10, 9, 1}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, VALID1x10x9x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5930.,  6116.,  6302.,  6488.,  6206.,  6404.,  6602.,  6800.,  6482.,
      6692.,  6902.,  7112.,  6758.,  6980.,  7202.,  7424.,  7034.,  7268.,
      7502.,  7736.,  7310.,  7556.,  7802.,  8048.,  7586.,  7844.,  8102.,
      8360.,  8414.,  8708.,  9002.,  9296.,  8690.,  8996.,  9302.,  9608.,
      8966.,  9284.,  9602.,  9920.,  9242.,  9572.,  9902.,  10232., 9518.,
      9860.,  10202., 10544., 9794.,  10148., 10502., 10856., 10070., 10436.,
      10802., 11168., 10898., 11300., 11702., 12104., 11174., 11588., 12002.,
      12416., 11450., 11876., 12302., 12728., 11726., 12164., 12602., 13040.,
      12002., 12452., 12902., 13352., 12278., 12740., 13202., 13664., 12554.,
      13028., 13502., 13976., 13382., 13892., 14402., 14912., 13658., 14180.,
      14702., 15224., 13934., 14468., 15002., 15536., 14210., 14756., 15302.,
      15848., 14486., 15044., 15602., 16160., 14762., 15332., 15902., 16472.,
      15038., 15620., 16202., 16784., 15866., 16484., 17102., 17720., 16142.,
      16772., 17402., 18032., 16418., 17060., 17702., 18344., 16694., 17348.,
      18002., 18656., 16970., 17636., 18302., 18968., 17246., 17924., 18602.,
      19280., 17522., 18212., 18902., 19592., 18350., 19076., 19802., 20528.,
      18626., 19364., 20102., 20840., 18902., 19652., 20402., 21152., 19178.,
      19940., 20702., 21464., 19454., 20228., 21002., 21776., 19730., 20516.,
      21302., 22088., 20006., 20804., 21602., 22400., 20834., 21668., 22502.,
      23336., 21110., 21956., 22802., 23648., 21386., 22244., 23102., 23960.,
      21662., 22532., 23402., 24272., 21938., 22820., 23702., 24584., 22214.,
      23108., 24002., 24896., 22490., 23396., 24302., 25208.};
  const std::array<int, 4> in_shape = {{1, 10, 9, 1}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, SAME1x10x9x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      179921., 182462., 211484., 214424., 243460., 246792., 275835., 279552.,
      246540., 249816., 216874., 219716., 186851., 189266., 226576., 229264.,
      265636., 268744., 305024., 308544., 344724., 348648., 307392., 310848.,
      269780., 272776., 231904., 234448., 275553., 278334., 322371., 325584.,
      369396., 373032., 416610., 420660., 370764., 374328., 324765., 327852.,
      278631., 281250., 325880., 328700., 380555., 383810., 435280., 438960.,
      490035., 494130., 435360., 438960., 380695., 383810., 326060., 328700.,
      278955., 281250., 325206., 327852., 371340., 374328., 417339., 420660.,
      370116., 373032., 323064., 325584., 276201., 278334., 232624., 234448.,
      270676., 272776., 308480., 310848., 346020., 348648., 306240., 308544.,
      266756., 268744., 227584., 229264., 187859., 189266., 218099., 219716.,
      247996., 249816., 277536., 279552., 245028., 246792., 212905., 214424.,
      181181., 182462.};
  const std::array<int, 4> in_shape = {{1, 10, 9, 2}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, VALID1x10x9x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      3166.,  3244.,  3322.,  3400.,  3478.,  3556.,  3634.,  3712.,  3790.,
      3868.,  3946.,  4024.,  4102.,  4180.,  4570.,  4648.,  4726.,  4804.,
      4882.,  4960.,  5038.,  5116.,  5194.,  5272.,  5350.,  5428.,  5506.,
      5584.,  5974.,  6052.,  6130.,  6208.,  6286.,  6364.,  6442.,  6520.,
      6598.,  6676.,  6754.,  6832.,  6910.,  6988.,  7378.,  7456.,  7534.,
      7612.,  7690.,  7768.,  7846.,  7924.,  8002.,  8080.,  8158.,  8236.,
      8314.,  8392.,  8782.,  8860.,  8938.,  9016.,  9094.,  9172.,  9250.,
      9328.,  9406.,  9484.,  9562.,  9640.,  9718.,  9796.,  10186., 10264.,
      10342., 10420., 10498., 10576., 10654., 10732., 10810., 10888., 10966.,
      11044., 11122., 11200., 11590., 11668., 11746., 11824., 11902., 11980.,
      12058., 12136., 12214., 12292., 12370., 12448., 12526., 12604.};
  const std::array<int, 4> in_shape = {{1, 10, 9, 2}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, SAME1x10x9x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      357322., 359842., 362362., 364924., 419979., 422968., 425810., 428848.,
      483448., 486920., 490056., 493584., 547701., 551670., 555072., 559104.,
      489496., 493080., 495992., 499632., 430563., 433748., 436198., 439432.,
      370930., 373702., 375718., 378532., 449840., 453152., 455168., 458528.,
      527352., 531272., 533512., 537488., 605504., 610048., 612480., 617088.,
      684264., 689448., 692040., 697296., 610112., 614784., 616960., 621696.,
      535416., 539560., 541352., 545552., 460208., 463808., 465248., 468896.,
      546894., 551106., 552402., 556668., 639765., 644742., 646128., 651168.,
      733032., 738792., 740232., 746064., 826659., 833220., 834678., 841320.,
      735624., 741528., 742680., 748656., 644301., 649530., 650412., 655704.,
      552726., 557262., 557910., 562500., 646540., 651760., 652120., 657400.,
      754950., 761110., 761390., 767620., 863440., 870560., 870720., 877920.,
      971970., 980070., 980070., 988260., 863440., 870720., 870560., 877920.,
      754950., 761390., 761110., 767620., 646540., 652120., 651760., 657400.,
      552726., 557910., 557262., 562500., 644301., 650412., 649530., 655704.,
      735624., 742680., 741528., 748656., 826659., 834678., 833220., 841320.,
      733032., 740232., 738792., 746064., 639765., 646128., 644742., 651168.,
      546894., 552402., 551106., 556668., 460208., 465248., 463808., 468896.,
      535416., 541352., 539560., 545552., 610112., 616960., 614784., 621696.,
      684264., 692040., 689448., 697296., 605504., 612480., 610048., 617088.,
      527352., 533512., 531272., 537488., 449840., 455168., 453152., 458528.,
      370930., 375718., 373702., 378532., 430563., 436198., 433748., 439432.,
      489496., 495992., 493080., 499632., 547701., 555072., 551670., 559104.,
      483448., 490056., 486920., 493584., 419979., 425810., 422968., 428848.,
      357322., 362362., 359842., 364924.};
  const std::array<int, 4> in_shape = {{1, 10, 9, 2}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, VALID1x10x9x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5972.,  6332.,  6116.,  6488.,  6260.,  6644.,  6404.,  6800.,  6548.,
      6956.,  6692.,  7112.,  6836.,  7268.,  6980.,  7424.,  7124.,  7580.,
      7268.,  7736.,  7412.,  7892.,  7556.,  8048.,  7700.,  8204.,  7844.,
      8360.,  8564.,  9140.,  8708.,  9296.,  8852.,  9452.,  8996.,  9608.,
      9140.,  9764.,  9284.,  9920.,  9428.,  10076., 9572.,  10232., 9716.,
      10388., 9860.,  10544., 10004., 10700., 10148., 10856., 10292., 11012.,
      10436., 11168., 11156., 11948., 11300., 12104., 11444., 12260., 11588.,
      12416., 11732., 12572., 11876., 12728., 12020., 12884., 12164., 13040.,
      12308., 13196., 12452., 13352., 12596., 13508., 12740., 13664., 12884.,
      13820., 13028., 13976., 13748., 14756., 13892., 14912., 14036., 15068.,
      14180., 15224., 14324., 15380., 14468., 15536., 14612., 15692., 14756.,
      15848., 14900., 16004., 15044., 16160., 15188., 16316., 15332., 16472.,
      15476., 16628., 15620., 16784., 16340., 17564., 16484., 17720., 16628.,
      17876., 16772., 18032., 16916., 18188., 17060., 18344., 17204., 18500.,
      17348., 18656., 17492., 18812., 17636., 18968., 17780., 19124., 17924.,
      19280., 18068., 19436., 18212., 19592., 18932., 20372., 19076., 20528.,
      19220., 20684., 19364., 20840., 19508., 20996., 19652., 21152., 19796.,
      21308., 19940., 21464., 20084., 21620., 20228., 21776., 20372., 21932.,
      20516., 22088., 20660., 22244., 20804., 22400., 21524., 23180., 21668.,
      23336., 21812., 23492., 21956., 23648., 22100., 23804., 22244., 23960.,
      22388., 24116., 22532., 24272., 22676., 24428., 22820., 24584., 22964.,
      24740., 23108., 24896., 23252., 25052., 23396., 25208.};
  const std::array<int, 4> in_shape = {{1, 10, 9, 2}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, SAME1x10x9x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      712124.,  714644.,  717164.,  719684.,  722162.,  724724.,  727286.,
      729848.,  836969.,  839958.,  842947.,  845936.,  848582.,  851620.,
      854658.,  857696.,  963424.,  966896.,  970368.,  973840.,  976584.,
      980112.,  983640.,  987168.,  1091433., 1095402., 1099371., 1103340.,
      1106112., 1110144., 1114176., 1118208., 975408.,  978992.,  982576.,
      986160.,  988344.,  991984.,  995624.,  999264.,  857941.,  861126.,
      864311.,  867496.,  869162.,  872396.,  875630.,  878864.,  739088.,
      741860.,  744632.,  747404.,  748622.,  751436.,  754250.,  757064.,
      896368.,  899680.,  902992.,  906304.,  906976.,  910336.,  913696.,
      917056.,  1050784., 1054704., 1058624., 1062544., 1063048., 1067024.,
      1071000., 1074976., 1206464., 1211008., 1215552., 1220096., 1220352.,
      1224960., 1229568., 1234176., 1363344., 1368528., 1373712., 1378896.,
      1378824., 1384080., 1389336., 1394592., 1215552., 1220224., 1224896.,
      1229568., 1229184., 1233920., 1238656., 1243392., 1066688., 1070832.,
      1074976., 1079120., 1078504., 1082704., 1086904., 1091104., 916816.,
      920416.,  924016.,  927616.,  926848.,  930496.,  934144.,  937792.,
      1089576., 1093788., 1098000., 1102212., 1100538., 1104804., 1109070.,
      1113336., 1274553., 1279530., 1284507., 1289484., 1287216., 1292256.,
      1297296., 1302336., 1460304., 1466064., 1471824., 1477584., 1474632.,
      1480464., 1486296., 1492128., 1646757., 1653318., 1659879., 1666440.,
      1662714., 1669356., 1675998., 1682640., 1465344., 1471248., 1477152.,
      1483056., 1479384., 1485360., 1491336., 1497312., 1283373., 1288602.,
      1293831., 1299060., 1295532., 1300824., 1306116., 1311408., 1100916.,
      1105452., 1109988., 1114524., 1111230., 1115820., 1120410., 1125000.,
      1287860., 1293080., 1298300., 1303520., 1298960., 1304240., 1309520.,
      1314800., 1503740., 1509900., 1516060., 1522220., 1516550., 1522780.,
      1529010., 1535240., 1719760., 1726880., 1734000., 1741120., 1734240.,
      1741440., 1748640., 1755840., 1935840., 1943940., 1952040., 1960140.,
      1951950., 1960140., 1968330., 1976520., 1719600., 1726880., 1734160.,
      1741440., 1733760., 1741120., 1748480., 1755840., 1503460., 1509900.,
      1516340., 1522780., 1515710., 1522220., 1528730., 1535240., 1287500.,
      1293080., 1298660., 1304240., 1297880., 1303520., 1309160., 1314800.,
      1100268., 1105452., 1110636., 1115820., 1109286., 1114524., 1119762.,
      1125000., 1282491., 1288602., 1294713., 1300824., 1292886., 1299060.,
      1305234., 1311408., 1464192., 1471248., 1478304., 1485360., 1475928.,
      1483056., 1490184., 1497312., 1645299., 1653318., 1661337., 1669356.,
      1658340., 1666440., 1674540., 1682640., 1458864., 1466064., 1473264.,
      1480464., 1470312., 1477584., 1484856., 1492128., 1273167., 1279530.,
      1285893., 1292256., 1283058., 1289484., 1295910., 1302336., 1088280.,
      1093788., 1099296., 1104804., 1096650., 1102212., 1107774., 1113336.,
      915376.,  920416.,  925456.,  930496.,  922528.,  927616.,  932704.,
      937792.,  1064896., 1070832., 1076768., 1082704., 1073128., 1079120.,
      1085112., 1091104., 1213376., 1220224., 1227072., 1233920., 1222656.,
      1229568., 1236480., 1243392., 1360752., 1368528., 1376304., 1384080.,
      1371048., 1378896., 1386744., 1394592., 1204032., 1211008., 1217984.,
      1224960., 1213056., 1220096., 1227136., 1234176., 1048544., 1054704.,
      1060864., 1067024., 1056328., 1062544., 1068760., 1074976., 894352.,
      899680.,  905008.,  910336.,  900928.,  906304.,  911680.,  917056.,
      737072.,  741860.,  746648.,  751436.,  742574.,  747404.,  752234.,
      757064.,  855491.,  861126.,  866761.,  872396.,  861812.,  867496.,
      873180.,  878864.,  972496.,  978992.,  985488.,  991984.,  979608.,
      986160.,  992712.,  999264.,  1088031., 1095402., 1102773., 1110144.,
      1095906., 1103340., 1110774., 1118208., 960288.,  966896.,  973504.,
      980112.,  967176.,  973840.,  980504.,  987168.,  834127.,  839958.,
      845789.,  851620.,  840056.,  845936.,  851816.,  857696.,  709604.,
      714644.,  719684.,  724724.,  714602.,  719684.,  724766.,  729848.};
  const std::array<int, 4> in_shape = {{1, 10, 9, 2}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, VALID1x10x9x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      11584., 11944., 12304., 12664., 11860., 12232., 12604., 12976., 12136.,
      12520., 12904., 13288., 12412., 12808., 13204., 13600., 12688., 13096.,
      13504., 13912., 12964., 13384., 13804., 14224., 13240., 13672., 14104.,
      14536., 13516., 13960., 14404., 14848., 13792., 14248., 14704., 15160.,
      14068., 14536., 15004., 15472., 14344., 14824., 15304., 15784., 14620.,
      15112., 15604., 16096., 14896., 15400., 15904., 16408., 15172., 15688.,
      16204., 16720., 16552., 17128., 17704., 18280., 16828., 17416., 18004.,
      18592., 17104., 17704., 18304., 18904., 17380., 17992., 18604., 19216.,
      17656., 18280., 18904., 19528., 17932., 18568., 19204., 19840., 18208.,
      18856., 19504., 20152., 18484., 19144., 19804., 20464., 18760., 19432.,
      20104., 20776., 19036., 19720., 20404., 21088., 19312., 20008., 20704.,
      21400., 19588., 20296., 21004., 21712., 19864., 20584., 21304., 22024.,
      20140., 20872., 21604., 22336., 21520., 22312., 23104., 23896., 21796.,
      22600., 23404., 24208., 22072., 22888., 23704., 24520., 22348., 23176.,
      24004., 24832., 22624., 23464., 24304., 25144., 22900., 23752., 24604.,
      25456., 23176., 24040., 24904., 25768., 23452., 24328., 25204., 26080.,
      23728., 24616., 25504., 26392., 24004., 24904., 25804., 26704., 24280.,
      25192., 26104., 27016., 24556., 25480., 26404., 27328., 24832., 25768.,
      26704., 27640., 25108., 26056., 27004., 27952., 26488., 27496., 28504.,
      29512., 26764., 27784., 28804., 29824., 27040., 28072., 29104., 30136.,
      27316., 28360., 29404., 30448., 27592., 28648., 29704., 30760., 27868.,
      28936., 30004., 31072., 28144., 29224., 30304., 31384., 28420., 29512.,
      30604., 31696., 28696., 29800., 30904., 32008., 28972., 30088., 31204.,
      32320., 29248., 30376., 31504., 32632., 29524., 30664., 31804., 32944.,
      29800., 30952., 32104., 33256., 30076., 31240., 32404., 33568., 31456.,
      32680., 33904., 35128., 31732., 32968., 34204., 35440., 32008., 33256.,
      34504., 35752., 32284., 33544., 34804., 36064., 32560., 33832., 35104.,
      36376., 32836., 34120., 35404., 36688., 33112., 34408., 35704., 37000.,
      33388., 34696., 36004., 37312., 33664., 34984., 36304., 37624., 33940.,
      35272., 36604., 37936., 34216., 35560., 36904., 38248., 34492., 35848.,
      37204., 38560., 34768., 36136., 37504., 38872., 35044., 36424., 37804.,
      39184., 36424., 37864., 39304., 40744., 36700., 38152., 39604., 41056.,
      36976., 38440., 39904., 41368., 37252., 38728., 40204., 41680., 37528.,
      39016., 40504., 41992., 37804., 39304., 40804., 42304., 38080., 39592.,
      41104., 42616., 38356., 39880., 41404., 42928., 38632., 40168., 41704.,
      43240., 38908., 40456., 42004., 43552., 39184., 40744., 42304., 43864.,
      39460., 41032., 42604., 44176., 39736., 41320., 42904., 44488., 40012.,
      41608., 43204., 44800., 41392., 43048., 44704., 46360., 41668., 43336.,
      45004., 46672., 41944., 43624., 45304., 46984., 42220., 43912., 45604.,
      47296., 42496., 44200., 45904., 47608., 42772., 44488., 46204., 47920.,
      43048., 44776., 46504., 48232., 43324., 45064., 46804., 48544., 43600.,
      45352., 47104., 48856., 43876., 45640., 47404., 49168., 44152., 45928.,
      47704., 49480., 44428., 46216., 48004., 49792., 44704., 46504., 48304.,
      50104., 44980., 46792., 48604., 50416.};
  const std::array<int, 4> in_shape = {{1, 10, 9, 2}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, SAME1x10x9x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      357301., 359842., 362383., 364924., 420028., 422968., 425908., 428848.,
      483588., 486920., 490252., 493584., 547953., 551670., 555387., 559104.,
      489804., 493080., 496356., 499632., 430906., 433748., 436590., 439432.,
      371287., 373702., 376117., 378532., 450464., 453152., 455840., 458528.,
      528164., 531272., 534380., 537488., 606528., 610048., 613568., 617088.,
      685524., 689448., 693372., 697296., 611328., 614784., 618240., 621696.,
      536564., 539560., 542556., 545552., 461264., 463808., 466352., 468896.,
      548325., 551106., 553887., 556668., 641529., 644742., 647955., 651168.,
      735156., 738792., 742428., 746064., 829170., 833220., 837270., 841320.,
      737964., 741528., 745092., 748656., 646443., 649530., 652617., 655704.,
      554643., 557262., 559881., 562500., 648940., 651760., 654580., 657400.,
      757855., 761110., 764365., 767620., 866880., 870560., 874240., 877920.,
      975975., 980070., 984165., 988260., 867120., 870720., 874320., 877920.,
      758275., 761390., 764505., 767620., 649480., 652120., 654760., 657400.,
      555615., 557910., 560205., 562500., 647766., 650412., 653058., 655704.,
      739692., 742680., 745668., 748656., 831357., 834678., 837999., 841320.,
      737316., 740232., 743148., 746064., 643608., 646128., 648648., 651168.,
      550269., 552402., 554535., 556668., 463424., 465248., 467072., 468896.,
      539252., 541352., 543452., 545552., 614592., 616960., 619328., 621696.,
      689412., 692040., 694668., 697296., 610176., 612480., 614784., 617088.,
      531524., 533512., 535500., 537488., 453488., 455168., 456848., 458528.,
      374311., 375718., 377125., 378532., 434581., 436198., 437815., 439432.,
      494172., 495992., 497812., 499632., 553056., 555072., 557088., 559104.,
      488292., 490056., 491820., 493584., 424291., 425810., 427329., 428848.,
      361081., 362362., 363643., 364924.};
  const std::array<int, 4> in_shape = {{1, 10, 9, 4}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, VALID1x10x9x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      6254.,  6332.,  6410.,  6488.,  6566.,  6644.,  6722.,  6800.,  6878.,
      6956.,  7034.,  7112.,  7190.,  7268.,  7346.,  7424.,  7502.,  7580.,
      7658.,  7736.,  7814.,  7892.,  7970.,  8048.,  8126.,  8204.,  8282.,
      8360.,  9062.,  9140.,  9218.,  9296.,  9374.,  9452.,  9530.,  9608.,
      9686.,  9764.,  9842.,  9920.,  9998.,  10076., 10154., 10232., 10310.,
      10388., 10466., 10544., 10622., 10700., 10778., 10856., 10934., 11012.,
      11090., 11168., 11870., 11948., 12026., 12104., 12182., 12260., 12338.,
      12416., 12494., 12572., 12650., 12728., 12806., 12884., 12962., 13040.,
      13118., 13196., 13274., 13352., 13430., 13508., 13586., 13664., 13742.,
      13820., 13898., 13976., 14678., 14756., 14834., 14912., 14990., 15068.,
      15146., 15224., 15302., 15380., 15458., 15536., 15614., 15692., 15770.,
      15848., 15926., 16004., 16082., 16160., 16238., 16316., 16394., 16472.,
      16550., 16628., 16706., 16784., 17486., 17564., 17642., 17720., 17798.,
      17876., 17954., 18032., 18110., 18188., 18266., 18344., 18422., 18500.,
      18578., 18656., 18734., 18812., 18890., 18968., 19046., 19124., 19202.,
      19280., 19358., 19436., 19514., 19592., 20294., 20372., 20450., 20528.,
      20606., 20684., 20762., 20840., 20918., 20996., 21074., 21152., 21230.,
      21308., 21386., 21464., 21542., 21620., 21698., 21776., 21854., 21932.,
      22010., 22088., 22166., 22244., 22322., 22400., 23102., 23180., 23258.,
      23336., 23414., 23492., 23570., 23648., 23726., 23804., 23882., 23960.,
      24038., 24116., 24194., 24272., 24350., 24428., 24506., 24584., 24662.,
      24740., 24818., 24896., 24974., 25052., 25130., 25208.};
  const std::array<int, 4> in_shape = {{1, 10, 9, 4}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, SAME1x10x9x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      709604.,  714602.,  714644.,  719684.,  719684.,  724766.,  724724.,
      729848.,  834127.,  840056.,  839958.,  845936.,  845789.,  851816.,
      851620.,  857696.,  960288.,  967176.,  966896.,  973840.,  973504.,
      980504.,  980112.,  987168.,  1088031., 1095906., 1095402., 1103340.,
      1102773., 1110774., 1110144., 1118208., 972496.,  979608.,  978992.,
      986160.,  985488.,  992712.,  991984.,  999264.,  855491.,  861812.,
      861126.,  867496.,  866761.,  873180.,  872396.,  878864.,  737072.,
      742574.,  741860.,  747404.,  746648.,  752234.,  751436.,  757064.,
      894352.,  900928.,  899680.,  906304.,  905008.,  911680.,  910336.,
      917056.,  1048544., 1056328., 1054704., 1062544., 1060864., 1068760.,
      1067024., 1074976., 1204032., 1213056., 1211008., 1220096., 1217984.,
      1227136., 1224960., 1234176., 1360752., 1371048., 1368528., 1378896.,
      1376304., 1386744., 1384080., 1394592., 1213376., 1222656., 1220224.,
      1229568., 1227072., 1236480., 1233920., 1243392., 1064896., 1073128.,
      1070832., 1079120., 1076768., 1085112., 1082704., 1091104., 915376.,
      922528.,  920416.,  927616.,  925456.,  932704.,  930496.,  937792.,
      1088280., 1096650., 1093788., 1102212., 1099296., 1107774., 1104804.,
      1113336., 1273167., 1283058., 1279530., 1289484., 1285893., 1295910.,
      1292256., 1302336., 1458864., 1470312., 1466064., 1477584., 1473264.,
      1484856., 1480464., 1492128., 1645299., 1658340., 1653318., 1666440.,
      1661337., 1674540., 1669356., 1682640., 1464192., 1475928., 1471248.,
      1483056., 1478304., 1490184., 1485360., 1497312., 1282491., 1292886.,
      1288602., 1299060., 1294713., 1305234., 1300824., 1311408., 1100268.,
      1109286., 1105452., 1114524., 1110636., 1119762., 1115820., 1125000.,
      1287500., 1297880., 1293080., 1303520., 1298660., 1309160., 1304240.,
      1314800., 1503460., 1515710., 1509900., 1522220., 1516340., 1528730.,
      1522780., 1535240., 1719600., 1733760., 1726880., 1741120., 1734160.,
      1748480., 1741440., 1755840., 1935840., 1951950., 1943940., 1960140.,
      1952040., 1968330., 1960140., 1976520., 1719760., 1734240., 1726880.,
      1741440., 1734000., 1748640., 1741120., 1755840., 1503740., 1516550.,
      1509900., 1522780., 1516060., 1529010., 1522220., 1535240., 1287860.,
      1298960., 1293080., 1304240., 1298300., 1309520., 1303520., 1314800.,
      1100916., 1111230., 1105452., 1115820., 1109988., 1120410., 1114524.,
      1125000., 1283373., 1295532., 1288602., 1300824., 1293831., 1306116.,
      1299060., 1311408., 1465344., 1479384., 1471248., 1485360., 1477152.,
      1491336., 1483056., 1497312., 1646757., 1662714., 1653318., 1669356.,
      1659879., 1675998., 1666440., 1682640., 1460304., 1474632., 1466064.,
      1480464., 1471824., 1486296., 1477584., 1492128., 1274553., 1287216.,
      1279530., 1292256., 1284507., 1297296., 1289484., 1302336., 1089576.,
      1100538., 1093788., 1104804., 1098000., 1109070., 1102212., 1113336.,
      916816.,  926848.,  920416.,  930496.,  924016.,  934144.,  927616.,
      937792.,  1066688., 1078504., 1070832., 1082704., 1074976., 1086904.,
      1079120., 1091104., 1215552., 1229184., 1220224., 1233920., 1224896.,
      1238656., 1229568., 1243392., 1363344., 1378824., 1368528., 1384080.,
      1373712., 1389336., 1378896., 1394592., 1206464., 1220352., 1211008.,
      1224960., 1215552., 1229568., 1220096., 1234176., 1050784., 1063048.,
      1054704., 1067024., 1058624., 1071000., 1062544., 1074976., 896368.,
      906976.,  899680.,  910336.,  902992.,  913696.,  906304.,  917056.,
      739088.,  748622.,  741860.,  751436.,  744632.,  754250.,  747404.,
      757064.,  857941.,  869162.,  861126.,  872396.,  864311.,  875630.,
      867496.,  878864.,  975408.,  988344.,  978992.,  991984.,  982576.,
      995624.,  986160.,  999264.,  1091433., 1106112., 1095402., 1110144.,
      1099371., 1114176., 1103340., 1118208., 963424.,  976584.,  966896.,
      980112.,  970368.,  983640.,  973840.,  987168.,  836969.,  848582.,
      839958.,  851620.,  842947.,  854658.,  845936.,  857696.,  712124.,
      722162.,  714644.,  724724.,  717164.,  727286.,  719684.,  729848.};
  const std::array<int, 4> in_shape = {{1, 10, 9, 4}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, VALID1x10x9x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      11800., 12508., 11944., 12664., 12088., 12820., 12232., 12976., 12376.,
      13132., 12520., 13288., 12664., 13444., 12808., 13600., 12952., 13756.,
      13096., 13912., 13240., 14068., 13384., 14224., 13528., 14380., 13672.,
      14536., 13816., 14692., 13960., 14848., 14104., 15004., 14248., 15160.,
      14392., 15316., 14536., 15472., 14680., 15628., 14824., 15784., 14968.,
      15940., 15112., 16096., 15256., 16252., 15400., 16408., 15544., 16564.,
      15688., 16720., 16984., 18124., 17128., 18280., 17272., 18436., 17416.,
      18592., 17560., 18748., 17704., 18904., 17848., 19060., 17992., 19216.,
      18136., 19372., 18280., 19528., 18424., 19684., 18568., 19840., 18712.,
      19996., 18856., 20152., 19000., 20308., 19144., 20464., 19288., 20620.,
      19432., 20776., 19576., 20932., 19720., 21088., 19864., 21244., 20008.,
      21400., 20152., 21556., 20296., 21712., 20440., 21868., 20584., 22024.,
      20728., 22180., 20872., 22336., 22168., 23740., 22312., 23896., 22456.,
      24052., 22600., 24208., 22744., 24364., 22888., 24520., 23032., 24676.,
      23176., 24832., 23320., 24988., 23464., 25144., 23608., 25300., 23752.,
      25456., 23896., 25612., 24040., 25768., 24184., 25924., 24328., 26080.,
      24472., 26236., 24616., 26392., 24760., 26548., 24904., 26704., 25048.,
      26860., 25192., 27016., 25336., 27172., 25480., 27328., 25624., 27484.,
      25768., 27640., 25912., 27796., 26056., 27952., 27352., 29356., 27496.,
      29512., 27640., 29668., 27784., 29824., 27928., 29980., 28072., 30136.,
      28216., 30292., 28360., 30448., 28504., 30604., 28648., 30760., 28792.,
      30916., 28936., 31072., 29080., 31228., 29224., 31384., 29368., 31540.,
      29512., 31696., 29656., 31852., 29800., 32008., 29944., 32164., 30088.,
      32320., 30232., 32476., 30376., 32632., 30520., 32788., 30664., 32944.,
      30808., 33100., 30952., 33256., 31096., 33412., 31240., 33568., 32536.,
      34972., 32680., 35128., 32824., 35284., 32968., 35440., 33112., 35596.,
      33256., 35752., 33400., 35908., 33544., 36064., 33688., 36220., 33832.,
      36376., 33976., 36532., 34120., 36688., 34264., 36844., 34408., 37000.,
      34552., 37156., 34696., 37312., 34840., 37468., 34984., 37624., 35128.,
      37780., 35272., 37936., 35416., 38092., 35560., 38248., 35704., 38404.,
      35848., 38560., 35992., 38716., 36136., 38872., 36280., 39028., 36424.,
      39184., 37720., 40588., 37864., 40744., 38008., 40900., 38152., 41056.,
      38296., 41212., 38440., 41368., 38584., 41524., 38728., 41680., 38872.,
      41836., 39016., 41992., 39160., 42148., 39304., 42304., 39448., 42460.,
      39592., 42616., 39736., 42772., 39880., 42928., 40024., 43084., 40168.,
      43240., 40312., 43396., 40456., 43552., 40600., 43708., 40744., 43864.,
      40888., 44020., 41032., 44176., 41176., 44332., 41320., 44488., 41464.,
      44644., 41608., 44800., 42904., 46204., 43048., 46360., 43192., 46516.,
      43336., 46672., 43480., 46828., 43624., 46984., 43768., 47140., 43912.,
      47296., 44056., 47452., 44200., 47608., 44344., 47764., 44488., 47920.,
      44632., 48076., 44776., 48232., 44920., 48388., 45064., 48544., 45208.,
      48700., 45352., 48856., 45496., 49012., 45640., 49168., 45784., 49324.,
      45928., 49480., 46072., 49636., 46216., 49792., 46360., 49948., 46504.,
      50104., 46648., 50260., 46792., 50416.};
  const std::array<int, 4> in_shape = {{1, 10, 9, 4}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, SAME1x10x9x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1414210., 1419208., 1424206., 1429204., 1424248., 1429288., 1434328.,
      1439368., 1434286., 1439368., 1444450., 1449532., 1444324., 1449448.,
      1454572., 1459696., 1662325., 1668254., 1674183., 1680112., 1673938.,
      1679916., 1685894., 1691872., 1685551., 1691578., 1697605., 1703632.,
      1697164., 1703240., 1709316., 1715392., 1913688., 1920576., 1927464.,
      1934352., 1926848., 1933792., 1940736., 1947680., 1940008., 1947008.,
      1954008., 1961008., 1953168., 1960224., 1967280., 1974336., 2168187.,
      2176062., 2183937., 2191812., 2182866., 2190804., 2198742., 2206680.,
      2197545., 2205546., 2213547., 2221548., 2212224., 2220288., 2228352.,
      2236416., 1937880., 1944992., 1952104., 1959216., 1950816., 1957984.,
      1965152., 1972320., 1963752., 1970976., 1978200., 1985424., 1976688.,
      1983968., 1991248., 1998528., 1704661., 1710982., 1717303., 1723624.,
      1715882., 1722252., 1728622., 1734992., 1727103., 1733522., 1739941.,
      1746360., 1738324., 1744792., 1751260., 1757728., 1468642., 1474144.,
      1479646., 1485148., 1478176., 1483720., 1489264., 1494808., 1487710.,
      1493296., 1498882., 1504468., 1497244., 1502872., 1508500., 1514128.,
      1782128., 1788704., 1795280., 1801856., 1792736., 1799360., 1805984.,
      1812608., 1803344., 1810016., 1816688., 1823360., 1813952., 1820672.,
      1827392., 1834112., 2089304., 2097088., 2104872., 2112656., 2101568.,
      2109408., 2117248., 2125088., 2113832., 2121728., 2129624., 2137520.,
      2126096., 2134048., 2142000., 2149952., 2399040., 2408064., 2417088.,
      2426112., 2412928., 2422016., 2431104., 2440192., 2426816., 2435968.,
      2445120., 2454272., 2440704., 2449920., 2459136., 2468352., 2711208.,
      2721504., 2731800., 2742096., 2726688., 2737056., 2747424., 2757792.,
      2742168., 2752608., 2763048., 2773488., 2757648., 2768160., 2778672.,
      2789184., 2417472., 2426752., 2436032., 2445312., 2431104., 2440448.,
      2449792., 2459136., 2444736., 2454144., 2463552., 2472960., 2458368.,
      2467840., 2477312., 2486784., 2121560., 2129792., 2138024., 2146256.,
      2133376., 2141664., 2149952., 2158240., 2145192., 2153536., 2161880.,
      2170224., 2157008., 2165408., 2173808., 2182208., 1823600., 1830752.,
      1837904., 1845056., 1833632., 1840832., 1848032., 1855232., 1843664.,
      1850912., 1858160., 1865408., 1853696., 1860992., 1868288., 1875584.,
      2168190., 2176560., 2184930., 2193300., 2179152., 2187576., 2196000.,
      2204424., 2190114., 2198592., 2207070., 2215548., 2201076., 2209608.,
      2218140., 2226672., 2536443., 2546334., 2556225., 2566116., 2549106.,
      2559060., 2569014., 2578968., 2561769., 2571786., 2581803., 2591820.,
      2574432., 2584512., 2594592., 2604672., 2906280., 2917728., 2929176.,
      2940624., 2920608., 2932128., 2943648., 2955168., 2934936., 2946528.,
      2958120., 2969712., 2949264., 2960928., 2972592., 2984256., 3277557.,
      3290598., 3303639., 3316680., 3293514., 3306636., 3319758., 3332880.,
      3309471., 3322674., 3335877., 3349080., 3325428., 3338712., 3351996.,
      3365280., 2916648., 2928384., 2940120., 2951856., 2930688., 2942496.,
      2954304., 2966112., 2944728., 2956608., 2968488., 2980368., 2958768.,
      2970720., 2982672., 2994624., 2554587., 2564982., 2575377., 2585772.,
      2566746., 2577204., 2587662., 2598120., 2578905., 2589426., 2599947.,
      2610468., 2591064., 2601648., 2612232., 2622816., 2191518., 2200536.,
      2209554., 2218572., 2201832., 2210904., 2219976., 2229048., 2212146.,
      2221272., 2230398., 2239524., 2222460., 2231640., 2240820., 2250000.,
      2564620., 2575000., 2585380., 2595760., 2575720., 2586160., 2596600.,
      2607040., 2586820., 2597320., 2607820., 2618320., 2597920., 2608480.,
      2619040., 2629600., 2994670., 3006920., 3019170., 3031420., 3007480.,
      3019800., 3032120., 3044440., 3020290., 3032680., 3045070., 3057460.,
      3033100., 3045560., 3058020., 3070480., 3425040., 3439200., 3453360.,
      3467520., 3439520., 3453760., 3468000., 3482240., 3454000., 3468320.,
      3482640., 3496960., 3468480., 3482880., 3497280., 3511680., 3855570.,
      3871680., 3887790., 3903900., 3871680., 3887880., 3904080., 3920280.,
      3887790., 3904080., 3920370., 3936660., 3903900., 3920280., 3936660.,
      3953040., 3425040., 3439520., 3454000., 3468480., 3439200., 3453760.,
      3468320., 3482880., 3453360., 3468000., 3482640., 3497280., 3467520.,
      3482240., 3496960., 3511680., 2994670., 3007480., 3020290., 3033100.,
      3006920., 3019800., 3032680., 3045560., 3019170., 3032120., 3045070.,
      3058020., 3031420., 3044440., 3057460., 3070480., 2564620., 2575720.,
      2586820., 2597920., 2575000., 2586160., 2597320., 2608480., 2585380.,
      2596600., 2607820., 2619040., 2595760., 2607040., 2618320., 2629600.,
      2191518., 2201832., 2212146., 2222460., 2200536., 2210904., 2221272.,
      2231640., 2209554., 2219976., 2230398., 2240820., 2218572., 2229048.,
      2239524., 2250000., 2554587., 2566746., 2578905., 2591064., 2564982.,
      2577204., 2589426., 2601648., 2575377., 2587662., 2599947., 2612232.,
      2585772., 2598120., 2610468., 2622816., 2916648., 2930688., 2944728.,
      2958768., 2928384., 2942496., 2956608., 2970720., 2940120., 2954304.,
      2968488., 2982672., 2951856., 2966112., 2980368., 2994624., 3277557.,
      3293514., 3309471., 3325428., 3290598., 3306636., 3322674., 3338712.,
      3303639., 3319758., 3335877., 3351996., 3316680., 3332880., 3349080.,
      3365280., 2906280., 2920608., 2934936., 2949264., 2917728., 2932128.,
      2946528., 2960928., 2929176., 2943648., 2958120., 2972592., 2940624.,
      2955168., 2969712., 2984256., 2536443., 2549106., 2561769., 2574432.,
      2546334., 2559060., 2571786., 2584512., 2556225., 2569014., 2581803.,
      2594592., 2566116., 2578968., 2591820., 2604672., 2168190., 2179152.,
      2190114., 2201076., 2176560., 2187576., 2198592., 2209608., 2184930.,
      2196000., 2207070., 2218140., 2193300., 2204424., 2215548., 2226672.,
      1823600., 1833632., 1843664., 1853696., 1830752., 1840832., 1850912.,
      1860992., 1837904., 1848032., 1858160., 1868288., 1845056., 1855232.,
      1865408., 1875584., 2121560., 2133376., 2145192., 2157008., 2129792.,
      2141664., 2153536., 2165408., 2138024., 2149952., 2161880., 2173808.,
      2146256., 2158240., 2170224., 2182208., 2417472., 2431104., 2444736.,
      2458368., 2426752., 2440448., 2454144., 2467840., 2436032., 2449792.,
      2463552., 2477312., 2445312., 2459136., 2472960., 2486784., 2711208.,
      2726688., 2742168., 2757648., 2721504., 2737056., 2752608., 2768160.,
      2731800., 2747424., 2763048., 2778672., 2742096., 2757792., 2773488.,
      2789184., 2399040., 2412928., 2426816., 2440704., 2408064., 2422016.,
      2435968., 2449920., 2417088., 2431104., 2445120., 2459136., 2426112.,
      2440192., 2454272., 2468352., 2089304., 2101568., 2113832., 2126096.,
      2097088., 2109408., 2121728., 2134048., 2104872., 2117248., 2129624.,
      2142000., 2112656., 2125088., 2137520., 2149952., 1782128., 1792736.,
      1803344., 1813952., 1788704., 1799360., 1810016., 1820672., 1795280.,
      1805984., 1816688., 1827392., 1801856., 1812608., 1823360., 1834112.,
      1468642., 1478176., 1487710., 1497244., 1474144., 1483720., 1493296.,
      1502872., 1479646., 1489264., 1498882., 1508500., 1485148., 1494808.,
      1504468., 1514128., 1704661., 1715882., 1727103., 1738324., 1710982.,
      1722252., 1733522., 1744792., 1717303., 1728622., 1739941., 1751260.,
      1723624., 1734992., 1746360., 1757728., 1937880., 1950816., 1963752.,
      1976688., 1944992., 1957984., 1970976., 1983968., 1952104., 1965152.,
      1978200., 1991248., 1959216., 1972320., 1985424., 1998528., 2168187.,
      2182866., 2197545., 2212224., 2176062., 2190804., 2205546., 2220288.,
      2183937., 2198742., 2213547., 2228352., 2191812., 2206680., 2221548.,
      2236416., 1913688., 1926848., 1940008., 1953168., 1920576., 1933792.,
      1947008., 1960224., 1927464., 1940736., 1954008., 1967280., 1934352.,
      1947680., 1961008., 1974336., 1662325., 1673938., 1685551., 1697164.,
      1668254., 1679916., 1691578., 1703240., 1674183., 1685894., 1697605.,
      1709316., 1680112., 1691872., 1703632., 1715392., 1414210., 1424248.,
      1434286., 1444324., 1419208., 1429288., 1439368., 1449448., 1424206.,
      1434328., 1444450., 1454572., 1429204., 1439368., 1449532., 1459696.};
  const std::array<int, 4> in_shape = {{1, 10, 9, 4}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, VALID1x10x9x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      22892., 23600.,  24308., 25016., 23168., 23888.,  24608., 25328., 23444.,
      24176., 24908.,  25640., 23720., 24464., 25208.,  25952., 23996., 24752.,
      25508., 26264.,  24272., 25040., 25808., 26576.,  24548., 25328., 26108.,
      26888., 24824.,  25616., 26408., 27200., 25100.,  25904., 26708., 27512.,
      25376., 26192.,  27008., 27824., 25652., 26480.,  27308., 28136., 25928.,
      26768., 27608.,  28448., 26204., 27056., 27908.,  28760., 26480., 27344.,
      28208., 29072.,  26756., 27632., 28508., 29384.,  27032., 27920., 28808.,
      29696., 27308.,  28208., 29108., 30008., 27584.,  28496., 29408., 30320.,
      27860., 28784.,  29708., 30632., 28136., 29072.,  30008., 30944., 28412.,
      29360., 30308.,  31256., 28688., 29648., 30608.,  31568., 28964., 29936.,
      30908., 31880.,  29240., 30224., 31208., 32192.,  29516., 30512., 31508.,
      32504., 29792.,  30800., 31808., 32816., 30068.,  31088., 32108., 33128.,
      30344., 31376.,  32408., 33440., 32828., 33968.,  35108., 36248., 33104.,
      34256., 35408.,  36560., 33380., 34544., 35708.,  36872., 33656., 34832.,
      36008., 37184.,  33932., 35120., 36308., 37496.,  34208., 35408., 36608.,
      37808., 34484.,  35696., 36908., 38120., 34760.,  35984., 37208., 38432.,
      35036., 36272.,  37508., 38744., 35312., 36560.,  37808., 39056., 35588.,
      36848., 38108.,  39368., 35864., 37136., 38408.,  39680., 36140., 37424.,
      38708., 39992.,  36416., 37712., 39008., 40304.,  36692., 38000., 39308.,
      40616., 36968.,  38288., 39608., 40928., 37244.,  38576., 39908., 41240.,
      37520., 38864.,  40208., 41552., 37796., 39152.,  40508., 41864., 38072.,
      39440., 40808.,  42176., 38348., 39728., 41108.,  42488., 38624., 40016.,
      41408., 42800.,  38900., 40304., 41708., 43112.,  39176., 40592., 42008.,
      43424., 39452.,  40880., 42308., 43736., 39728.,  41168., 42608., 44048.,
      40004., 41456.,  42908., 44360., 40280., 41744.,  43208., 44672., 42764.,
      44336., 45908.,  47480., 43040., 44624., 46208.,  47792., 43316., 44912.,
      46508., 48104.,  43592., 45200., 46808., 48416.,  43868., 45488., 47108.,
      48728., 44144.,  45776., 47408., 49040., 44420.,  46064., 47708., 49352.,
      44696., 46352.,  48008., 49664., 44972., 46640.,  48308., 49976., 45248.,
      46928., 48608.,  50288., 45524., 47216., 48908.,  50600., 45800., 47504.,
      49208., 50912.,  46076., 47792., 49508., 51224.,  46352., 48080., 49808.,
      51536., 46628.,  48368., 50108., 51848., 46904.,  48656., 50408., 52160.,
      47180., 48944.,  50708., 52472., 47456., 49232.,  51008., 52784., 47732.,
      49520., 51308.,  53096., 48008., 49808., 51608.,  53408., 48284., 50096.,
      51908., 53720.,  48560., 50384., 52208., 54032.,  48836., 50672., 52508.,
      54344., 49112.,  50960., 52808., 54656., 49388.,  51248., 53108., 54968.,
      49664., 51536.,  53408., 55280., 49940., 51824.,  53708., 55592., 50216.,
      52112., 54008.,  55904., 52700., 54704., 56708.,  58712., 52976., 54992.,
      57008., 59024.,  53252., 55280., 57308., 59336.,  53528., 55568., 57608.,
      59648., 53804.,  55856., 57908., 59960., 54080.,  56144., 58208., 60272.,
      54356., 56432.,  58508., 60584., 54632., 56720.,  58808., 60896., 54908.,
      57008., 59108.,  61208., 55184., 57296., 59408.,  61520., 55460., 57584.,
      59708., 61832.,  55736., 57872., 60008., 62144.,  56012., 58160., 60308.,
      62456., 56288.,  58448., 60608., 62768., 56564.,  58736., 60908., 63080.,
      56840., 59024.,  61208., 63392., 57116., 59312.,  61508., 63704., 57392.,
      59600., 61808.,  64016., 57668., 59888., 62108.,  64328., 57944., 60176.,
      62408., 64640.,  58220., 60464., 62708., 64952.,  58496., 60752., 63008.,
      65264., 58772.,  61040., 63308., 65576., 59048.,  61328., 63608., 65888.,
      59324., 61616.,  63908., 66200., 59600., 61904.,  64208., 66512., 59876.,
      62192., 64508.,  66824., 60152., 62480., 64808.,  67136., 62636., 65072.,
      67508., 69944.,  62912., 65360., 67808., 70256.,  63188., 65648., 68108.,
      70568., 63464.,  65936., 68408., 70880., 63740.,  66224., 68708., 71192.,
      64016., 66512.,  69008., 71504., 64292., 66800.,  69308., 71816., 64568.,
      67088., 69608.,  72128., 64844., 67376., 69908.,  72440., 65120., 67664.,
      70208., 72752.,  65396., 67952., 70508., 73064.,  65672., 68240., 70808.,
      73376., 65948.,  68528., 71108., 73688., 66224.,  68816., 71408., 74000.,
      66500., 69104.,  71708., 74312., 66776., 69392.,  72008., 74624., 67052.,
      69680., 72308.,  74936., 67328., 69968., 72608.,  75248., 67604., 70256.,
      72908., 75560.,  67880., 70544., 73208., 75872.,  68156., 70832., 73508.,
      76184., 68432.,  71120., 73808., 76496., 68708.,  71408., 74108., 76808.,
      68984., 71696.,  74408., 77120., 69260., 71984.,  74708., 77432., 69536.,
      72272., 75008.,  77744., 69812., 72560., 75308.,  78056., 70088., 72848.,
      75608., 78368.,  72572., 75440., 78308., 81176.,  72848., 75728., 78608.,
      81488., 73124.,  76016., 78908., 81800., 73400.,  76304., 79208., 82112.,
      73676., 76592.,  79508., 82424., 73952., 76880.,  79808., 82736., 74228.,
      77168., 80108.,  83048., 74504., 77456., 80408.,  83360., 74780., 77744.,
      80708., 83672.,  75056., 78032., 81008., 83984.,  75332., 78320., 81308.,
      84296., 75608.,  78608., 81608., 84608., 75884.,  78896., 81908., 84920.,
      76160., 79184.,  82208., 85232., 76436., 79472.,  82508., 85544., 76712.,
      79760., 82808.,  85856., 76988., 80048., 83108.,  86168., 77264., 80336.,
      83408., 86480.,  77540., 80624., 83708., 86792.,  77816., 80912., 84008.,
      87104., 78092.,  81200., 84308., 87416., 78368.,  81488., 84608., 87728.,
      78644., 81776.,  84908., 88040., 78920., 82064.,  85208., 88352., 79196.,
      82352., 85508.,  88664., 79472., 82640., 85808.,  88976., 79748., 82928.,
      86108., 89288.,  80024., 83216., 86408., 89600.,  82508., 85808., 89108.,
      92408., 82784.,  86096., 89408., 92720., 83060.,  86384., 89708., 93032.,
      83336., 86672.,  90008., 93344., 83612., 86960.,  90308., 93656., 83888.,
      87248., 90608.,  93968., 84164., 87536., 90908.,  94280., 84440., 87824.,
      91208., 94592.,  84716., 88112., 91508., 94904.,  84992., 88400., 91808.,
      95216., 85268.,  88688., 92108., 95528., 85544.,  88976., 92408., 95840.,
      85820., 89264.,  92708., 96152., 86096., 89552.,  93008., 96464., 86372.,
      89840., 93308.,  96776., 86648., 90128., 93608.,  97088., 86924., 90416.,
      93908., 97400.,  87200., 90704., 94208., 97712.,  87476., 90992., 94508.,
      98024., 87752.,  91280., 94808., 98336., 88028.,  91568., 95108., 98648.,
      88304., 91856.,  95408., 98960., 88580., 92144.,  95708., 99272., 88856.,
      92432., 96008.,  99584., 89132., 92720., 96308.,  99896., 89408., 93008.,
      96608., 100208., 89684., 93296., 96908., 100520., 89960., 93584., 97208.,
      100832.};
  const std::array<int, 4> in_shape = {{1, 10, 9, 4}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, SAME1x10x10x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      131418., 151172., 171150., 191345., 173040., 154532., 135828.,
      165032., 189408., 213960., 238680., 215400., 191968., 168392.,
      200256., 229404., 258660., 288015., 259470., 230844., 202146.,
      236390., 270360., 304350., 338350., 304350., 270360., 236390.,
      202146., 230844., 259470., 288015., 258660., 229404., 200256.,
      168392., 191968., 215400., 238680., 213960., 189408., 165032.,
      135828., 154532., 173040., 191345., 171150., 151172., 131418.};
  const std::array<int, 4> in_shape = {{1, 10, 10, 1}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, VALID1x10x10x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      3200.,  3336.,  3472.,  3608.,  3744.,  3880.,  4016.,  4560.,  4696.,
      4832.,  4968.,  5104.,  5240.,  5376.,  5920.,  6056.,  6192.,  6328.,
      6464.,  6600.,  6736.,  7280.,  7416.,  7552.,  7688.,  7824.,  7960.,
      8096.,  8640.,  8776.,  8912.,  9048.,  9184.,  9320.,  9456.,  10000.,
      10136., 10272., 10408., 10544., 10680., 10816., 11360., 11496., 11632.,
      11768., 11904., 12040., 12176.};
  const std::array<int, 4> in_shape = {{1, 10, 10, 1}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, SAME1x10x10x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      261170., 262836., 300412., 302344., 340095., 342300., 380205., 382690.,
      343812., 346080., 307020., 309064., 269843., 271656., 327880., 330064.,
      376288., 378816., 425040., 427920., 474120., 477360., 427848., 430800.,
      381280., 383936., 334432., 336784., 397740., 400512., 455604., 458808.,
      513675., 517320., 571935., 576030., 515214., 518940., 458340., 461688.,
      401331., 404292., 469350., 472780., 536760., 540720., 604200., 608700.,
      671650., 676700., 604110., 608700., 536600., 540720., 469140., 472780.,
      400890., 404292., 457764., 461688., 514485., 518940., 571035., 576030.,
      512784., 517320., 454740., 458808., 396921., 400512., 333480., 336784.,
      380128., 383936., 426480., 430800., 472520., 477360., 423528., 427920.,
      374880., 378816., 326592., 330064., 268520., 271656., 305452., 309064.,
      341985., 346080., 378105., 382690., 338142., 342300., 298620., 302344.,
      259553., 262836.};
  const std::array<int, 4> in_shape = {{1, 10, 10, 1}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, VALID1x10x10x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      6120.,  6400.,  6376.,  6672.,  6632.,  6944.,  6888.,  7216.,  7144.,
      7488.,  7400.,  7760.,  7656.,  8032.,  8680.,  9120.,  8936.,  9392.,
      9192.,  9664.,  9448.,  9936.,  9704.,  10208., 9960.,  10480., 10216.,
      10752., 11240., 11840., 11496., 12112., 11752., 12384., 12008., 12656.,
      12264., 12928., 12520., 13200., 12776., 13472., 13800., 14560., 14056.,
      14832., 14312., 15104., 14568., 15376., 14824., 15648., 15080., 15920.,
      15336., 16192., 16360., 17280., 16616., 17552., 16872., 17824., 17128.,
      18096., 17384., 18368., 17640., 18640., 17896., 18912., 18920., 20000.,
      19176., 20272., 19432., 20544., 19688., 20816., 19944., 21088., 20200.,
      21360., 20456., 21632., 21480., 22720., 21736., 22992., 21992., 23264.,
      22248., 23536., 22504., 23808., 22760., 24080., 23016., 24352.};
  const std::array<int, 4> in_shape = {{1, 10, 10, 1}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, SAME1x10x10x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      520674.,  522340.,  524006.,  525672.,  598892.,  600824.,  602756.,
      604688.,  677985.,  680190.,  682395.,  684600.,  757925.,  760410.,
      762895.,  765380.,  685356.,  687624.,  689892.,  692160.,  611996.,
      614040.,  616084.,  618128.,  537873.,  539686.,  541499.,  543312.,
      653576.,  655760.,  657944.,  660128.,  750048.,  752576.,  755104.,
      757632.,  847200.,  850080.,  852960.,  855840.,  945000.,  948240.,
      951480.,  954720.,  852744.,  855696.,  858648.,  861600.,  759904.,
      762560.,  765216.,  767872.,  666512.,  668864.,  671216.,  673568.,
      792708.,  795480.,  798252.,  801024.,  908004.,  911208.,  914412.,
      917616.,  1023705., 1027350., 1030995., 1034640., 1139775., 1143870.,
      1147965., 1152060., 1026702., 1030428., 1034154., 1037880., 913332.,
      916680.,  920028.,  923376.,  799701.,  802662.,  805623.,  808584.,
      935270.,  938700.,  942130.,  945560.,  1069560., 1073520., 1077480.,
      1081440., 1203900., 1208400., 1212900., 1217400., 1338250., 1343300.,
      1348350., 1353400., 1203630., 1208220., 1212810., 1217400., 1069080.,
      1073200., 1077320., 1081440., 934640.,  938280.,  941920.,  945560.,
      798378.,  801780.,  805182.,  808584.,  911604.,  915528.,  919452.,
      923376.,  1024515., 1028970., 1033425., 1037880., 1137075., 1142070.,
      1147065., 1152060., 1021032., 1025568., 1030104., 1034640., 905412.,
      909480.,  913548.,  917616.,  790251.,  793842.,  797433.,  801024.,
      663656.,  666960.,  670264.,  673568.,  756448.,  760256.,  764064.,
      767872.,  848640.,  852960.,  857280.,  861600.,  940200.,  945040.,
      949880.,  954720.,  842664.,  847056.,  851448.,  855840.,  745824.,
      749760.,  753696.,  757632.,  649712.,  653184.,  656656.,  660128.,
      533904.,  537040.,  540176.,  543312.,  607292.,  610904.,  614516.,
      618128.,  679875.,  683970.,  688065.,  692160.,  751625.,  756210.,
      760795.,  765380.,  672126.,  676284.,  680442.,  684600.,  593516.,
      597240.,  600964.,  604688.,  515823.,  519106.,  522389.,  525672.};
  const std::array<int, 4> in_shape = {{1, 10, 10, 1}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, VALID1x10x10x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      11960., 12240., 12520., 12800., 12456., 12752., 13048., 13344., 12952.,
      13264., 13576., 13888., 13448., 13776., 14104., 14432., 13944., 14288.,
      14632., 14976., 14440., 14800., 15160., 15520., 14936., 15312., 15688.,
      16064., 16920., 17360., 17800., 18240., 17416., 17872., 18328., 18784.,
      17912., 18384., 18856., 19328., 18408., 18896., 19384., 19872., 18904.,
      19408., 19912., 20416., 19400., 19920., 20440., 20960., 19896., 20432.,
      20968., 21504., 21880., 22480., 23080., 23680., 22376., 22992., 23608.,
      24224., 22872., 23504., 24136., 24768., 23368., 24016., 24664., 25312.,
      23864., 24528., 25192., 25856., 24360., 25040., 25720., 26400., 24856.,
      25552., 26248., 26944., 26840., 27600., 28360., 29120., 27336., 28112.,
      28888., 29664., 27832., 28624., 29416., 30208., 28328., 29136., 29944.,
      30752., 28824., 29648., 30472., 31296., 29320., 30160., 31000., 31840.,
      29816., 30672., 31528., 32384., 31800., 32720., 33640., 34560., 32296.,
      33232., 34168., 35104., 32792., 33744., 34696., 35648., 33288., 34256.,
      35224., 36192., 33784., 34768., 35752., 36736., 34280., 35280., 36280.,
      37280., 34776., 35792., 36808., 37824., 36760., 37840., 38920., 40000.,
      37256., 38352., 39448., 40544., 37752., 38864., 39976., 41088., 38248.,
      39376., 40504., 41632., 38744., 39888., 41032., 42176., 39240., 40400.,
      41560., 42720., 39736., 40912., 42088., 43264., 41720., 42960., 44200.,
      45440., 42216., 43472., 44728., 45984., 42712., 43984., 45256., 46528.,
      43208., 44496., 45784., 47072., 43704., 45008., 46312., 47616., 44200.,
      45520., 46840., 48160., 44696., 46032., 47368., 48704.};
  const std::array<int, 4> in_shape = {{1, 10, 10, 1}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, SAME1x10x10x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      259553., 262836., 298620., 302344., 338142., 342300., 378105., 382690.,
      341985., 346080., 305452., 309064., 268520., 271656., 326592., 330064.,
      374880., 378816., 423528., 427920., 472520., 477360., 426480., 430800.,
      380128., 383936., 333480., 336784., 396921., 400512., 454740., 458808.,
      512784., 517320., 571035., 576030., 514485., 518940., 457764., 461688.,
      400890., 404292., 469140., 472780., 536600., 540720., 604110., 608700.,
      671650., 676700., 604200., 608700., 536760., 540720., 469350., 472780.,
      401331., 404292., 458340., 461688., 515214., 518940., 571935., 576030.,
      513675., 517320., 455604., 458808., 397740., 400512., 334432., 336784.,
      381280., 383936., 427848., 430800., 474120., 477360., 425040., 427920.,
      376288., 378816., 327880., 330064., 269843., 271656., 307020., 309064.,
      343812., 346080., 380205., 382690., 340095., 342300., 300412., 302344.,
      261170., 262836.};
  const std::array<int, 4> in_shape = {{1, 10, 10, 2}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, VALID1x10x10x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      6264.,  6400.,  6536.,  6672.,  6808.,  6944.,  7080.,  7216.,  7352.,
      7488.,  7624.,  7760.,  7896.,  8032.,  8984.,  9120.,  9256.,  9392.,
      9528.,  9664.,  9800.,  9936.,  10072., 10208., 10344., 10480., 10616.,
      10752., 11704., 11840., 11976., 12112., 12248., 12384., 12520., 12656.,
      12792., 12928., 13064., 13200., 13336., 13472., 14424., 14560., 14696.,
      14832., 14968., 15104., 15240., 15376., 15512., 15648., 15784., 15920.,
      16056., 16192., 17144., 17280., 17416., 17552., 17688., 17824., 17960.,
      18096., 18232., 18368., 18504., 18640., 18776., 18912., 19864., 20000.,
      20136., 20272., 20408., 20544., 20680., 20816., 20952., 21088., 21224.,
      21360., 21496., 21632., 22584., 22720., 22856., 22992., 23128., 23264.,
      23400., 23536., 23672., 23808., 23944., 24080., 24216., 24352.};
  const std::array<int, 4> in_shape = {{1, 10, 10, 2}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, SAME1x10x10x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      515823.,  519106.,  522340.,  525672.,  593432.,  597240.,  600824.,
      604688.,  671937.,  676284.,  680190.,  684600.,  751310.,  756210.,
      760410.,  765380.,  679497.,  683970.,  687624.,  692160.,  606872.,
      610904.,  614040.,  618128.,  533463.,  537040.,  539686.,  543312.,
      648872.,  653184.,  655760.,  660128.,  744768.,  749760.,  752576.,
      757632.,  841368.,  847056.,  850080.,  855840.,  938640.,  945040.,
      948240.,  954720.,  847128.,  852960.,  855696.,  861600.,  755008.,
      760256.,  762560.,  767872.,  662312.,  666960.,  668864.,  673568.,
      788361.,  793842.,  795480.,  801024.,  903144.,  909480.,  911208.,
      917616.,  1018359., 1025568., 1027350., 1034640., 1133970., 1142070.,
      1143870., 1152060., 1021599., 1028970., 1030428., 1037880., 908904.,
      915528.,  916680.,  923376.,  795921.,  801780.,  802662.,  808584.,
      931490.,  938280.,  938700.,  945560.,  1065360., 1073200., 1073520.,
      1081440., 1199310., 1208220., 1208400., 1217400., 1333300., 1343300.,
      1343300., 1353400., 1199310., 1208400., 1208220., 1217400., 1065360.,
      1073520., 1073200., 1081440., 931490.,  938700.,  938280.,  945560.,
      795921.,  802662.,  801780.,  808584.,  908904.,  916680.,  915528.,
      923376.,  1021599., 1030428., 1028970., 1037880., 1133970., 1143870.,
      1142070., 1152060., 1018359., 1027350., 1025568., 1034640., 903144.,
      911208.,  909480.,  917616.,  788361.,  795480.,  793842.,  801024.,
      662312.,  668864.,  666960.,  673568.,  755008.,  762560.,  760256.,
      767872.,  847128.,  855696.,  852960.,  861600.,  938640.,  948240.,
      945040.,  954720.,  841368.,  850080.,  847056.,  855840.,  744768.,
      752576.,  749760.,  757632.,  648872.,  655760.,  653184.,  660128.,
      533463.,  539686.,  537040.,  543312.,  606872.,  614040.,  610904.,
      618128.,  679497.,  687624.,  683970.,  692160.,  751310.,  760410.,
      756210.,  765380.,  671937.,  680190.,  676284.,  684600.,  593432.,
      600824.,  597240.,  604688.,  515823.,  522340.,  519106.,  525672.};
  const std::array<int, 4> in_shape = {{1, 10, 10, 2}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, VALID1x10x10x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      11984., 12528., 12240., 12800., 12496., 13072., 12752., 13344., 13008.,
      13616., 13264., 13888., 13520., 14160., 13776., 14432., 14032., 14704.,
      14288., 14976., 14544., 15248., 14800., 15520., 15056., 15792., 15312.,
      16064., 17104., 17968., 17360., 18240., 17616., 18512., 17872., 18784.,
      18128., 19056., 18384., 19328., 18640., 19600., 18896., 19872., 19152.,
      20144., 19408., 20416., 19664., 20688., 19920., 20960., 20176., 21232.,
      20432., 21504., 22224., 23408., 22480., 23680., 22736., 23952., 22992.,
      24224., 23248., 24496., 23504., 24768., 23760., 25040., 24016., 25312.,
      24272., 25584., 24528., 25856., 24784., 26128., 25040., 26400., 25296.,
      26672., 25552., 26944., 27344., 28848., 27600., 29120., 27856., 29392.,
      28112., 29664., 28368., 29936., 28624., 30208., 28880., 30480., 29136.,
      30752., 29392., 31024., 29648., 31296., 29904., 31568., 30160., 31840.,
      30416., 32112., 30672., 32384., 32464., 34288., 32720., 34560., 32976.,
      34832., 33232., 35104., 33488., 35376., 33744., 35648., 34000., 35920.,
      34256., 36192., 34512., 36464., 34768., 36736., 35024., 37008., 35280.,
      37280., 35536., 37552., 35792., 37824., 37584., 39728., 37840., 40000.,
      38096., 40272., 38352., 40544., 38608., 40816., 38864., 41088., 39120.,
      41360., 39376., 41632., 39632., 41904., 39888., 42176., 40144., 42448.,
      40400., 42720., 40656., 42992., 40912., 43264., 42704., 45168., 42960.,
      45440., 43216., 45712., 43472., 45984., 43728., 46256., 43984., 46528.,
      44240., 46800., 44496., 47072., 44752., 47344., 45008., 47616., 45264.,
      47888., 45520., 48160., 45776., 48432., 46032., 48704.};
  const std::array<int, 4> in_shape = {{1, 10, 10, 2}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, SAME1x10x10x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1028363., 1031646., 1034929., 1038212., 1041348., 1044680., 1048012.,
      1051344., 1183056., 1186864., 1190672., 1194480., 1197784., 1201648.,
      1205512., 1209376., 1339527., 1343874., 1348221., 1352568., 1355970.,
      1360380., 1364790., 1369200., 1497720., 1502620., 1507520., 1512420.,
      1515850., 1520820., 1525790., 1530760., 1354521., 1358994., 1363467.,
      1367940., 1370712., 1375248., 1379784., 1384320., 1209712., 1213744.,
      1217776., 1221808., 1223992., 1228080., 1232168., 1236256., 1063349.,
      1066926., 1070503., 1074080., 1075746., 1079372., 1082998., 1086624.,
      1293432., 1297744., 1302056., 1306368., 1307152., 1311520., 1315888.,
      1320256., 1484544., 1489536., 1494528., 1499520., 1500096., 1505152.,
      1510208., 1515264., 1677048., 1682736., 1688424., 1694112., 1694400.,
      1700160., 1705920., 1711680., 1870880., 1877280., 1883680., 1890080.,
      1890000., 1896480., 1902960., 1909440., 1688424., 1694256., 1700088.,
      1705920., 1705488., 1711392., 1717296., 1723200., 1504768., 1510016.,
      1515264., 1520512., 1519808., 1525120., 1530432., 1535744., 1319976.,
      1324624., 1329272., 1333920., 1333024., 1337728., 1342432., 1347136.,
      1571241., 1576722., 1582203., 1587684., 1585416., 1590960., 1596504.,
      1602048., 1799952., 1806288., 1812624., 1818960., 1816008., 1822416.,
      1828824., 1835232., 2029509., 2036718., 2043927., 2051136., 2047410.,
      2054700., 2061990., 2069280., 2259840., 2267940., 2276040., 2284140.,
      2279550., 2287740., 2295930., 2304120., 2035827., 2043198., 2050569.,
      2057940., 2053404., 2060856., 2068308., 2075760., 1811184., 1817808.,
      1824432., 1831056., 1826664., 1833360., 1840056., 1846752., 1585983.,
      1591842., 1597701., 1603560., 1599402., 1605324., 1611246., 1617168.,
      1856190., 1862980., 1869770., 1876560., 1870540., 1877400., 1884260.,
      1891120., 2122880., 2130720., 2138560., 2146400., 2139120., 2147040.,
      2154960., 2162880., 2389710., 2398620., 2407530., 2416440., 2407800.,
      2416800., 2425800., 2434800., 2656600., 2666600., 2676600., 2686600.,
      2676500., 2686600., 2696700., 2706800., 2389530., 2398620., 2407710.,
      2416800., 2407260., 2416440., 2425620., 2434800., 2122560., 2130720.,
      2138880., 2147040., 2138160., 2146400., 2154640., 2162880., 1855770.,
      1862980., 1870190., 1877400., 1869280., 1876560., 1883840., 1891120.,
      1585101., 1591842., 1598583., 1605324., 1596756., 1603560., 1610364.,
      1617168., 1810032., 1817808., 1825584., 1833360., 1823208., 1831056.,
      1838904., 1846752., 2034369., 2043198., 2052027., 2060856., 2049030.,
      2057940., 2066850., 2075760., 2258040., 2267940., 2277840., 2287740.,
      2274150., 2284140., 2294130., 2304120., 2027727., 2036718., 2045709.,
      2054700., 2042064., 2051136., 2060208., 2069280., 1798224., 1806288.,
      1814352., 1822416., 1810824., 1818960., 1827096., 1835232., 1569603.,
      1576722., 1583841., 1590960., 1580502., 1587684., 1594866., 1602048.,
      1318072., 1324624., 1331176., 1337728., 1327312., 1333920., 1340528.,
      1347136., 1502464., 1510016., 1517568., 1525120., 1512896., 1520512.,
      1528128., 1535744., 1685688., 1694256., 1702824., 1711392., 1697280.,
      1705920., 1714560., 1723200., 1867680., 1877280., 1886880., 1896480.,
      1880400., 1890080., 1899760., 1909440., 1674024., 1682736., 1691448.,
      1700160., 1685328., 1694112., 1702896., 1711680., 1481728., 1489536.,
      1497344., 1505152., 1491648., 1499520., 1507392., 1515264., 1290856.,
      1297744., 1304632., 1311520., 1299424., 1306368., 1313312., 1320256.,
      1060703., 1066926., 1073149., 1079372., 1067808., 1074080., 1080352.,
      1086624., 1206576., 1213744., 1220912., 1228080., 1214584., 1221808.,
      1229032., 1236256., 1350867., 1358994., 1367121., 1375248., 1359750.,
      1367940., 1376130., 1384320., 1493520., 1502620., 1511720., 1520820.,
      1503250., 1512420., 1521590., 1530760., 1335621., 1343874., 1352127.,
      1360380., 1344252., 1352568., 1360884., 1369200., 1179472., 1186864.,
      1194256., 1201648., 1187032., 1194480., 1201928., 1209376., 1025129.,
      1031646., 1038163., 1044680., 1031646., 1038212., 1044778., 1051344.};
  const std::array<int, 4> in_shape = {{1, 10, 10, 2}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, VALID1x10x10x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      23424., 23968., 24512., 25056., 23920., 24480., 25040., 25600., 24416.,
      24992., 25568., 26144., 24912., 25504., 26096., 26688., 25408., 26016.,
      26624., 27232., 25904., 26528., 27152., 27776., 26400., 27040., 27680.,
      28320., 26896., 27552., 28208., 28864., 27392., 28064., 28736., 29408.,
      27888., 28576., 29264., 29952., 28384., 29088., 29792., 30496., 28880.,
      29600., 30320., 31040., 29376., 30112., 30848., 31584., 29872., 30624.,
      31376., 32128., 33344., 34208., 35072., 35936., 33840., 34720., 35600.,
      36480., 34336., 35232., 36128., 37024., 34832., 35744., 36656., 37568.,
      35328., 36256., 37184., 38112., 35824., 36768., 37712., 38656., 36320.,
      37280., 38240., 39200., 36816., 37792., 38768., 39744., 37312., 38304.,
      39296., 40288., 37808., 38816., 39824., 40832., 38304., 39328., 40352.,
      41376., 38800., 39840., 40880., 41920., 39296., 40352., 41408., 42464.,
      39792., 40864., 41936., 43008., 43264., 44448., 45632., 46816., 43760.,
      44960., 46160., 47360., 44256., 45472., 46688., 47904., 44752., 45984.,
      47216., 48448., 45248., 46496., 47744., 48992., 45744., 47008., 48272.,
      49536., 46240., 47520., 48800., 50080., 46736., 48032., 49328., 50624.,
      47232., 48544., 49856., 51168., 47728., 49056., 50384., 51712., 48224.,
      49568., 50912., 52256., 48720., 50080., 51440., 52800., 49216., 50592.,
      51968., 53344., 49712., 51104., 52496., 53888., 53184., 54688., 56192.,
      57696., 53680., 55200., 56720., 58240., 54176., 55712., 57248., 58784.,
      54672., 56224., 57776., 59328., 55168., 56736., 58304., 59872., 55664.,
      57248., 58832., 60416., 56160., 57760., 59360., 60960., 56656., 58272.,
      59888., 61504., 57152., 58784., 60416., 62048., 57648., 59296., 60944.,
      62592., 58144., 59808., 61472., 63136., 58640., 60320., 62000., 63680.,
      59136., 60832., 62528., 64224., 59632., 61344., 63056., 64768., 63104.,
      64928., 66752., 68576., 63600., 65440., 67280., 69120., 64096., 65952.,
      67808., 69664., 64592., 66464., 68336., 70208., 65088., 66976., 68864.,
      70752., 65584., 67488., 69392., 71296., 66080., 68000., 69920., 71840.,
      66576., 68512., 70448., 72384., 67072., 69024., 70976., 72928., 67568.,
      69536., 71504., 73472., 68064., 70048., 72032., 74016., 68560., 70560.,
      72560., 74560., 69056., 71072., 73088., 75104., 69552., 71584., 73616.,
      75648., 73024., 75168., 77312., 79456., 73520., 75680., 77840., 80000.,
      74016., 76192., 78368., 80544., 74512., 76704., 78896., 81088., 75008.,
      77216., 79424., 81632., 75504., 77728., 79952., 82176., 76000., 78240.,
      80480., 82720., 76496., 78752., 81008., 83264., 76992., 79264., 81536.,
      83808., 77488., 79776., 82064., 84352., 77984., 80288., 82592., 84896.,
      78480., 80800., 83120., 85440., 78976., 81312., 83648., 85984., 79472.,
      81824., 84176., 86528., 82944., 85408., 87872., 90336., 83440., 85920.,
      88400., 90880., 83936., 86432., 88928., 91424., 84432., 86944., 89456.,
      91968., 84928., 87456., 89984., 92512., 85424., 87968., 90512., 93056.,
      85920., 88480., 91040., 93600., 86416., 88992., 91568., 94144., 86912.,
      89504., 92096., 94688., 87408., 90016., 92624., 95232., 87904., 90528.,
      93152., 95776., 88400., 91040., 93680., 96320., 88896., 91552., 94208.,
      96864., 89392., 92064., 94736., 97408.};
  const std::array<int, 4> in_shape = {{1, 10, 10, 2}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, SAME1x10x10x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      515823.,  519106.,  522389.,  525672.,  593516.,  597240.,  600964.,
      604688.,  672126.,  676284.,  680442.,  684600.,  751625.,  756210.,
      760795.,  765380.,  679875.,  683970.,  688065.,  692160.,  607292.,
      610904.,  614516.,  618128.,  533904.,  537040.,  540176.,  543312.,
      649712.,  653184.,  656656.,  660128.,  745824.,  749760.,  753696.,
      757632.,  842664.,  847056.,  851448.,  855840.,  940200.,  945040.,
      949880.,  954720.,  848640.,  852960.,  857280.,  861600.,  756448.,
      760256.,  764064.,  767872.,  663656.,  666960.,  670264.,  673568.,
      790251.,  793842.,  797433.,  801024.,  905412.,  909480.,  913548.,
      917616.,  1021032., 1025568., 1030104., 1034640., 1137075., 1142070.,
      1147065., 1152060., 1024515., 1028970., 1033425., 1037880., 911604.,
      915528.,  919452.,  923376.,  798378.,  801780.,  805182.,  808584.,
      934640.,  938280.,  941920.,  945560.,  1069080., 1073200., 1077320.,
      1081440., 1203630., 1208220., 1212810., 1217400., 1338250., 1343300.,
      1348350., 1353400., 1203900., 1208400., 1212900., 1217400., 1069560.,
      1073520., 1077480., 1081440., 935270.,  938700.,  942130.,  945560.,
      799701.,  802662.,  805623.,  808584.,  913332.,  916680.,  920028.,
      923376.,  1026702., 1030428., 1034154., 1037880., 1139775., 1143870.,
      1147965., 1152060., 1023705., 1027350., 1030995., 1034640., 908004.,
      911208.,  914412.,  917616.,  792708.,  795480.,  798252.,  801024.,
      666512.,  668864.,  671216.,  673568.,  759904.,  762560.,  765216.,
      767872.,  852744.,  855696.,  858648.,  861600.,  945000.,  948240.,
      951480.,  954720.,  847200.,  850080.,  852960.,  855840.,  750048.,
      752576.,  755104.,  757632.,  653576.,  655760.,  657944.,  660128.,
      537873.,  539686.,  541499.,  543312.,  611996.,  614040.,  616084.,
      618128.,  685356.,  687624.,  689892.,  692160.,  757925.,  760410.,
      762895.,  765380.,  677985.,  680190.,  682395.,  684600.,  598892.,
      600824.,  602756.,  604688.,  520674.,  522340.,  524006.,  525672.};
  const std::array<int, 4> in_shape = {{1, 10, 10, 4}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, VALID1x10x10x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      12392., 12528., 12664., 12800., 12936., 13072., 13208., 13344., 13480.,
      13616., 13752., 13888., 14024., 14160., 14296., 14432., 14568., 14704.,
      14840., 14976., 15112., 15248., 15384., 15520., 15656., 15792., 15928.,
      16064., 17832., 17968., 18104., 18240., 18376., 18512., 18648., 18784.,
      18920., 19056., 19192., 19328., 19464., 19600., 19736., 19872., 20008.,
      20144., 20280., 20416., 20552., 20688., 20824., 20960., 21096., 21232.,
      21368., 21504., 23272., 23408., 23544., 23680., 23816., 23952., 24088.,
      24224., 24360., 24496., 24632., 24768., 24904., 25040., 25176., 25312.,
      25448., 25584., 25720., 25856., 25992., 26128., 26264., 26400., 26536.,
      26672., 26808., 26944., 28712., 28848., 28984., 29120., 29256., 29392.,
      29528., 29664., 29800., 29936., 30072., 30208., 30344., 30480., 30616.,
      30752., 30888., 31024., 31160., 31296., 31432., 31568., 31704., 31840.,
      31976., 32112., 32248., 32384., 34152., 34288., 34424., 34560., 34696.,
      34832., 34968., 35104., 35240., 35376., 35512., 35648., 35784., 35920.,
      36056., 36192., 36328., 36464., 36600., 36736., 36872., 37008., 37144.,
      37280., 37416., 37552., 37688., 37824., 39592., 39728., 39864., 40000.,
      40136., 40272., 40408., 40544., 40680., 40816., 40952., 41088., 41224.,
      41360., 41496., 41632., 41768., 41904., 42040., 42176., 42312., 42448.,
      42584., 42720., 42856., 42992., 43128., 43264., 45032., 45168., 45304.,
      45440., 45576., 45712., 45848., 45984., 46120., 46256., 46392., 46528.,
      46664., 46800., 46936., 47072., 47208., 47344., 47480., 47616., 47752.,
      47888., 48024., 48160., 48296., 48432., 48568., 48704.};
  const std::array<int, 4> in_shape = {{1, 10, 10, 4}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, SAME1x10x10x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1025129., 1031646., 1031646., 1038212., 1038163., 1044778., 1044680.,
      1051344., 1179472., 1187032., 1186864., 1194480., 1194256., 1201928.,
      1201648., 1209376., 1335621., 1344252., 1343874., 1352568., 1352127.,
      1360884., 1360380., 1369200., 1493520., 1503250., 1502620., 1512420.,
      1511720., 1521590., 1520820., 1530760., 1350867., 1359750., 1358994.,
      1367940., 1367121., 1376130., 1375248., 1384320., 1206576., 1214584.,
      1213744., 1221808., 1220912., 1229032., 1228080., 1236256., 1060703.,
      1067808., 1066926., 1074080., 1073149., 1080352., 1079372., 1086624.,
      1290856., 1299424., 1297744., 1306368., 1304632., 1313312., 1311520.,
      1320256., 1481728., 1491648., 1489536., 1499520., 1497344., 1507392.,
      1505152., 1515264., 1674024., 1685328., 1682736., 1694112., 1691448.,
      1702896., 1700160., 1711680., 1867680., 1880400., 1877280., 1890080.,
      1886880., 1899760., 1896480., 1909440., 1685688., 1697280., 1694256.,
      1705920., 1702824., 1714560., 1711392., 1723200., 1502464., 1512896.,
      1510016., 1520512., 1517568., 1528128., 1525120., 1535744., 1318072.,
      1327312., 1324624., 1333920., 1331176., 1340528., 1337728., 1347136.,
      1569603., 1580502., 1576722., 1587684., 1583841., 1594866., 1590960.,
      1602048., 1798224., 1810824., 1806288., 1818960., 1814352., 1827096.,
      1822416., 1835232., 2027727., 2042064., 2036718., 2051136., 2045709.,
      2060208., 2054700., 2069280., 2258040., 2274150., 2267940., 2284140.,
      2277840., 2294130., 2287740., 2304120., 2034369., 2049030., 2043198.,
      2057940., 2052027., 2066850., 2060856., 2075760., 1810032., 1823208.,
      1817808., 1831056., 1825584., 1838904., 1833360., 1846752., 1585101.,
      1596756., 1591842., 1603560., 1598583., 1610364., 1605324., 1617168.,
      1855770., 1869280., 1862980., 1876560., 1870190., 1883840., 1877400.,
      1891120., 2122560., 2138160., 2130720., 2146400., 2138880., 2154640.,
      2147040., 2162880., 2389530., 2407260., 2398620., 2416440., 2407710.,
      2425620., 2416800., 2434800., 2656600., 2676500., 2666600., 2686600.,
      2676600., 2696700., 2686600., 2706800., 2389710., 2407800., 2398620.,
      2416800., 2407530., 2425800., 2416440., 2434800., 2122880., 2139120.,
      2130720., 2147040., 2138560., 2154960., 2146400., 2162880., 1856190.,
      1870540., 1862980., 1877400., 1869770., 1884260., 1876560., 1891120.,
      1585983., 1599402., 1591842., 1605324., 1597701., 1611246., 1603560.,
      1617168., 1811184., 1826664., 1817808., 1833360., 1824432., 1840056.,
      1831056., 1846752., 2035827., 2053404., 2043198., 2060856., 2050569.,
      2068308., 2057940., 2075760., 2259840., 2279550., 2267940., 2287740.,
      2276040., 2295930., 2284140., 2304120., 2029509., 2047410., 2036718.,
      2054700., 2043927., 2061990., 2051136., 2069280., 1799952., 1816008.,
      1806288., 1822416., 1812624., 1828824., 1818960., 1835232., 1571241.,
      1585416., 1576722., 1590960., 1582203., 1596504., 1587684., 1602048.,
      1319976., 1333024., 1324624., 1337728., 1329272., 1342432., 1333920.,
      1347136., 1504768., 1519808., 1510016., 1525120., 1515264., 1530432.,
      1520512., 1535744., 1688424., 1705488., 1694256., 1711392., 1700088.,
      1717296., 1705920., 1723200., 1870880., 1890000., 1877280., 1896480.,
      1883680., 1902960., 1890080., 1909440., 1677048., 1694400., 1682736.,
      1700160., 1688424., 1705920., 1694112., 1711680., 1484544., 1500096.,
      1489536., 1505152., 1494528., 1510208., 1499520., 1515264., 1293432.,
      1307152., 1297744., 1311520., 1302056., 1315888., 1306368., 1320256.,
      1063349., 1075746., 1066926., 1079372., 1070503., 1082998., 1074080.,
      1086624., 1209712., 1223992., 1213744., 1228080., 1217776., 1232168.,
      1221808., 1236256., 1354521., 1370712., 1358994., 1375248., 1363467.,
      1379784., 1367940., 1384320., 1497720., 1515850., 1502620., 1520820.,
      1507520., 1525790., 1512420., 1530760., 1339527., 1355970., 1343874.,
      1360380., 1348221., 1364790., 1352568., 1369200., 1183056., 1197784.,
      1186864., 1201648., 1190672., 1205512., 1194480., 1209376., 1028363.,
      1041348., 1031646., 1044680., 1034929., 1048012., 1038212., 1051344.};
  const std::array<int, 4> in_shape = {{1, 10, 10, 4}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, VALID1x10x10x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      23712., 24784., 23968., 25056., 24224., 25328., 24480., 25600., 24736.,
      25872., 24992., 26144., 25248., 26416., 25504., 26688., 25760., 26960.,
      26016., 27232., 26272., 27504., 26528., 27776., 26784., 28048., 27040.,
      28320., 27296., 28592., 27552., 28864., 27808., 29136., 28064., 29408.,
      28320., 29680., 28576., 29952., 28832., 30224., 29088., 30496., 29344.,
      30768., 29600., 31040., 29856., 31312., 30112., 31584., 30368., 31856.,
      30624., 32128., 33952., 35664., 34208., 35936., 34464., 36208., 34720.,
      36480., 34976., 36752., 35232., 37024., 35488., 37296., 35744., 37568.,
      36000., 37840., 36256., 38112., 36512., 38384., 36768., 38656., 37024.,
      38928., 37280., 39200., 37536., 39472., 37792., 39744., 38048., 40016.,
      38304., 40288., 38560., 40560., 38816., 40832., 39072., 41104., 39328.,
      41376., 39584., 41648., 39840., 41920., 40096., 42192., 40352., 42464.,
      40608., 42736., 40864., 43008., 44192., 46544., 44448., 46816., 44704.,
      47088., 44960., 47360., 45216., 47632., 45472., 47904., 45728., 48176.,
      45984., 48448., 46240., 48720., 46496., 48992., 46752., 49264., 47008.,
      49536., 47264., 49808., 47520., 50080., 47776., 50352., 48032., 50624.,
      48288., 50896., 48544., 51168., 48800., 51440., 49056., 51712., 49312.,
      51984., 49568., 52256., 49824., 52528., 50080., 52800., 50336., 53072.,
      50592., 53344., 50848., 53616., 51104., 53888., 54432., 57424., 54688.,
      57696., 54944., 57968., 55200., 58240., 55456., 58512., 55712., 58784.,
      55968., 59056., 56224., 59328., 56480., 59600., 56736., 59872., 56992.,
      60144., 57248., 60416., 57504., 60688., 57760., 60960., 58016., 61232.,
      58272., 61504., 58528., 61776., 58784., 62048., 59040., 62320., 59296.,
      62592., 59552., 62864., 59808., 63136., 60064., 63408., 60320., 63680.,
      60576., 63952., 60832., 64224., 61088., 64496., 61344., 64768., 64672.,
      68304., 64928., 68576., 65184., 68848., 65440., 69120., 65696., 69392.,
      65952., 69664., 66208., 69936., 66464., 70208., 66720., 70480., 66976.,
      70752., 67232., 71024., 67488., 71296., 67744., 71568., 68000., 71840.,
      68256., 72112., 68512., 72384., 68768., 72656., 69024., 72928., 69280.,
      73200., 69536., 73472., 69792., 73744., 70048., 74016., 70304., 74288.,
      70560., 74560., 70816., 74832., 71072., 75104., 71328., 75376., 71584.,
      75648., 74912., 79184., 75168., 79456., 75424., 79728., 75680., 80000.,
      75936., 80272., 76192., 80544., 76448., 80816., 76704., 81088., 76960.,
      81360., 77216., 81632., 77472., 81904., 77728., 82176., 77984., 82448.,
      78240., 82720., 78496., 82992., 78752., 83264., 79008., 83536., 79264.,
      83808., 79520., 84080., 79776., 84352., 80032., 84624., 80288., 84896.,
      80544., 85168., 80800., 85440., 81056., 85712., 81312., 85984., 81568.,
      86256., 81824., 86528., 85152., 90064., 85408., 90336., 85664., 90608.,
      85920., 90880., 86176., 91152., 86432., 91424., 86688., 91696., 86944.,
      91968., 87200., 92240., 87456., 92512., 87712., 92784., 87968., 93056.,
      88224., 93328., 88480., 93600., 88736., 93872., 88992., 94144., 89248.,
      94416., 89504., 94688., 89760., 94960., 90016., 95232., 90272., 95504.,
      90528., 95776., 90784., 96048., 91040., 96320., 91296., 96592., 91552.,
      96864., 91808., 97136., 92064., 97408.};
  const std::array<int, 4> in_shape = {{1, 10, 10, 4}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, SAME1x10x10x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      2043741., 2050258., 2056775., 2063292., 2056726., 2063292., 2069858.,
      2076424., 2069711., 2076326., 2082941., 2089556., 2082696., 2089360.,
      2096024., 2102688., 2351384., 2358944., 2366504., 2374064., 2366112.,
      2373728., 2381344., 2388960., 2380840., 2388512., 2396184., 2403856.,
      2395568., 2403296., 2411024., 2418752., 2662611., 2671242., 2679873.,
      2688504., 2679054., 2687748., 2696442., 2705136., 2695497., 2704254.,
      2713011., 2721768., 2711940., 2720760., 2729580., 2738400., 2977310.,
      2987040., 2996770., 3006500., 2995440., 3005240., 3015040., 3024840.,
      3013570., 3023440., 3033310., 3043180., 3031700., 3041640., 3051580.,
      3061520., 2692851., 2701734., 2710617., 2719500., 2709042., 2717988.,
      2726934., 2735880., 2725233., 2734242., 2743251., 2752260., 2741424.,
      2750496., 2759568., 2768640., 2405144., 2413152., 2421160., 2429168.,
      2419424., 2427488., 2435552., 2443616., 2433704., 2441824., 2449944.,
      2458064., 2447984., 2456160., 2464336., 2472512., 2114301., 2121406.,
      2128511., 2135616., 2126698., 2133852., 2141006., 2148160., 2139095.,
      2146298., 2153501., 2160704., 2151492., 2158744., 2165996., 2173248.,
      2573144., 2581712., 2590280., 2598848., 2586864., 2595488., 2604112.,
      2612736., 2600584., 2609264., 2617944., 2626624., 2614304., 2623040.,
      2631776., 2640512., 2953536., 2963456., 2973376., 2983296., 2969088.,
      2979072., 2989056., 2999040., 2984640., 2994688., 3004736., 3014784.,
      3000192., 3010304., 3020416., 3030528., 3336744., 3348048., 3359352.,
      3370656., 3354096., 3365472., 3376848., 3388224., 3371448., 3382896.,
      3394344., 3405792., 3388800., 3400320., 3411840., 3423360., 3722640.,
      3735360., 3748080., 3760800., 3741760., 3754560., 3767360., 3780160.,
      3760880., 3773760., 3786640., 3799520., 3780000., 3792960., 3805920.,
      3818880., 3359784., 3371376., 3382968., 3394560., 3376848., 3388512.,
      3400176., 3411840., 3393912., 3405648., 3417384., 3429120., 3410976.,
      3422784., 3434592., 3446400., 2994496., 3004928., 3015360., 3025792.,
      3009536., 3020032., 3030528., 3041024., 3024576., 3035136., 3045696.,
      3056256., 3039616., 3050240., 3060864., 3071488., 2626904., 2636144.,
      2645384., 2654624., 2639952., 2649248., 2658544., 2667840., 2653000.,
      2662352., 2671704., 2681056., 2666048., 2675456., 2684864., 2694272.,
      3128307., 3139206., 3150105., 3161004., 3142482., 3153444., 3164406.,
      3175368., 3156657., 3167682., 3178707., 3189732., 3170832., 3181920.,
      3193008., 3204096., 3583848., 3596448., 3609048., 3621648., 3599904.,
      3612576., 3625248., 3637920., 3615960., 3628704., 3641448., 3654192.,
      3632016., 3644832., 3657648., 3670464., 4041117., 4055454., 4069791.,
      4084128., 4059018., 4073436., 4087854., 4102272., 4076919., 4091418.,
      4105917., 4120416., 4094820., 4109400., 4123980., 4138560., 4499970.,
      4516080., 4532190., 4548300., 4519680., 4535880., 4552080., 4568280.,
      4539390., 4555680., 4571970., 4588260., 4559100., 4575480., 4591860.,
      4608240., 4054077., 4068738., 4083399., 4098060., 4071654., 4086396.,
      4101138., 4115880., 4089231., 4104054., 4118877., 4133700., 4106808.,
      4121712., 4136616., 4151520., 3606888., 3620064., 3633240., 3646416.,
      3622368., 3635616., 3648864., 3662112., 3637848., 3651168., 3664488.,
      3677808., 3653328., 3666720., 3680112., 3693504., 3158547., 3170202.,
      3181857., 3193512., 3171966., 3183684., 3195402., 3207120., 3185385.,
      3197166., 3208947., 3220728., 3198804., 3210648., 3222492., 3234336.,
      3698030., 3711540., 3725050., 3738560., 3712380., 3725960., 3739540.,
      3753120., 3726730., 3740380., 3754030., 3767680., 3741080., 3754800.,
      3768520., 3782240., 4229520., 4245120., 4260720., 4276320., 4245760.,
      4261440., 4277120., 4292800., 4262000., 4277760., 4293520., 4309280.,
      4278240., 4294080., 4309920., 4325760., 4761330., 4779060., 4796790.,
      4814520., 4779420., 4797240., 4815060., 4832880., 4797510., 4815420.,
      4833330., 4851240., 4815600., 4833600., 4851600., 4869600., 5293300.,
      5313200., 5333100., 5353000., 5313200., 5333200., 5353200., 5373200.,
      5333100., 5353200., 5373300., 5393400., 5353000., 5373200., 5393400.,
      5413600., 4761330., 4779420., 4797510., 4815600., 4779060., 4797240.,
      4815420., 4833600., 4796790., 4815060., 4833330., 4851600., 4814520.,
      4832880., 4851240., 4869600., 4229520., 4245760., 4262000., 4278240.,
      4245120., 4261440., 4277760., 4294080., 4260720., 4277120., 4293520.,
      4309920., 4276320., 4292800., 4309280., 4325760., 3698030., 3712380.,
      3726730., 3741080., 3711540., 3725960., 3740380., 3754800., 3725050.,
      3739540., 3754030., 3768520., 3738560., 3753120., 3767680., 3782240.,
      3158547., 3171966., 3185385., 3198804., 3170202., 3183684., 3197166.,
      3210648., 3181857., 3195402., 3208947., 3222492., 3193512., 3207120.,
      3220728., 3234336., 3606888., 3622368., 3637848., 3653328., 3620064.,
      3635616., 3651168., 3666720., 3633240., 3648864., 3664488., 3680112.,
      3646416., 3662112., 3677808., 3693504., 4054077., 4071654., 4089231.,
      4106808., 4068738., 4086396., 4104054., 4121712., 4083399., 4101138.,
      4118877., 4136616., 4098060., 4115880., 4133700., 4151520., 4499970.,
      4519680., 4539390., 4559100., 4516080., 4535880., 4555680., 4575480.,
      4532190., 4552080., 4571970., 4591860., 4548300., 4568280., 4588260.,
      4608240., 4041117., 4059018., 4076919., 4094820., 4055454., 4073436.,
      4091418., 4109400., 4069791., 4087854., 4105917., 4123980., 4084128.,
      4102272., 4120416., 4138560., 3583848., 3599904., 3615960., 3632016.,
      3596448., 3612576., 3628704., 3644832., 3609048., 3625248., 3641448.,
      3657648., 3621648., 3637920., 3654192., 3670464., 3128307., 3142482.,
      3156657., 3170832., 3139206., 3153444., 3167682., 3181920., 3150105.,
      3164406., 3178707., 3193008., 3161004., 3175368., 3189732., 3204096.,
      2626904., 2639952., 2653000., 2666048., 2636144., 2649248., 2662352.,
      2675456., 2645384., 2658544., 2671704., 2684864., 2654624., 2667840.,
      2681056., 2694272., 2994496., 3009536., 3024576., 3039616., 3004928.,
      3020032., 3035136., 3050240., 3015360., 3030528., 3045696., 3060864.,
      3025792., 3041024., 3056256., 3071488., 3359784., 3376848., 3393912.,
      3410976., 3371376., 3388512., 3405648., 3422784., 3382968., 3400176.,
      3417384., 3434592., 3394560., 3411840., 3429120., 3446400., 3722640.,
      3741760., 3760880., 3780000., 3735360., 3754560., 3773760., 3792960.,
      3748080., 3767360., 3786640., 3805920., 3760800., 3780160., 3799520.,
      3818880., 3336744., 3354096., 3371448., 3388800., 3348048., 3365472.,
      3382896., 3400320., 3359352., 3376848., 3394344., 3411840., 3370656.,
      3388224., 3405792., 3423360., 2953536., 2969088., 2984640., 3000192.,
      2963456., 2979072., 2994688., 3010304., 2973376., 2989056., 3004736.,
      3020416., 2983296., 2999040., 3014784., 3030528., 2573144., 2586864.,
      2600584., 2614304., 2581712., 2595488., 2609264., 2623040., 2590280.,
      2604112., 2617944., 2631776., 2598848., 2612736., 2626624., 2640512.,
      2114301., 2126698., 2139095., 2151492., 2121406., 2133852., 2146298.,
      2158744., 2128511., 2141006., 2153501., 2165996., 2135616., 2148160.,
      2160704., 2173248., 2405144., 2419424., 2433704., 2447984., 2413152.,
      2427488., 2441824., 2456160., 2421160., 2435552., 2449944., 2464336.,
      2429168., 2443616., 2458064., 2472512., 2692851., 2709042., 2725233.,
      2741424., 2701734., 2717988., 2734242., 2750496., 2710617., 2726934.,
      2743251., 2759568., 2719500., 2735880., 2752260., 2768640., 2977310.,
      2995440., 3013570., 3031700., 2987040., 3005240., 3023440., 3041640.,
      2996770., 3015040., 3033310., 3051580., 3006500., 3024840., 3043180.,
      3061520., 2662611., 2679054., 2695497., 2711940., 2671242., 2687748.,
      2704254., 2720760., 2679873., 2696442., 2713011., 2729580., 2688504.,
      2705136., 2721768., 2738400., 2351384., 2366112., 2380840., 2395568.,
      2358944., 2373728., 2388512., 2403296., 2366504., 2381344., 2396184.,
      2411024., 2374064., 2388960., 2403856., 2418752., 2043741., 2056726.,
      2069711., 2082696., 2050258., 2063292., 2076326., 2089360., 2056775.,
      2069858., 2082941., 2096024., 2063292., 2076424., 2089556., 2102688.};
  const std::array<int, 4> in_shape = {{1, 10, 10, 4}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, VALID1x10x10x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      46352.,  47424.,  48496.,  49568.,  46848.,  47936.,  49024.,  50112.,
      47344.,  48448.,  49552.,  50656.,  47840.,  48960.,  50080.,  51200.,
      48336.,  49472.,  50608.,  51744.,  48832.,  49984.,  51136.,  52288.,
      49328.,  50496.,  51664.,  52832.,  49824.,  51008.,  52192.,  53376.,
      50320.,  51520.,  52720.,  53920.,  50816.,  52032.,  53248.,  54464.,
      51312.,  52544.,  53776.,  55008.,  51808.,  53056.,  54304.,  55552.,
      52304.,  53568.,  54832.,  56096.,  52800.,  54080.,  55360.,  56640.,
      53296.,  54592.,  55888.,  57184.,  53792.,  55104.,  56416.,  57728.,
      54288.,  55616.,  56944.,  58272.,  54784.,  56128.,  57472.,  58816.,
      55280.,  56640.,  58000.,  59360.,  55776.,  57152.,  58528.,  59904.,
      56272.,  57664.,  59056.,  60448.,  56768.,  58176.,  59584.,  60992.,
      57264.,  58688.,  60112.,  61536.,  57760.,  59200.,  60640.,  62080.,
      58256.,  59712.,  61168.,  62624.,  58752.,  60224.,  61696.,  63168.,
      59248.,  60736.,  62224.,  63712.,  59744.,  61248.,  62752.,  64256.,
      66192.,  67904.,  69616.,  71328.,  66688.,  68416.,  70144.,  71872.,
      67184.,  68928.,  70672.,  72416.,  67680.,  69440.,  71200.,  72960.,
      68176.,  69952.,  71728.,  73504.,  68672.,  70464.,  72256.,  74048.,
      69168.,  70976.,  72784.,  74592.,  69664.,  71488.,  73312.,  75136.,
      70160.,  72000.,  73840.,  75680.,  70656.,  72512.,  74368.,  76224.,
      71152.,  73024.,  74896.,  76768.,  71648.,  73536.,  75424.,  77312.,
      72144.,  74048.,  75952.,  77856.,  72640.,  74560.,  76480.,  78400.,
      73136.,  75072.,  77008.,  78944.,  73632.,  75584.,  77536.,  79488.,
      74128.,  76096.,  78064.,  80032.,  74624.,  76608.,  78592.,  80576.,
      75120.,  77120.,  79120.,  81120.,  75616.,  77632.,  79648.,  81664.,
      76112.,  78144.,  80176.,  82208.,  76608.,  78656.,  80704.,  82752.,
      77104.,  79168.,  81232.,  83296.,  77600.,  79680.,  81760.,  83840.,
      78096.,  80192.,  82288.,  84384.,  78592.,  80704.,  82816.,  84928.,
      79088.,  81216.,  83344.,  85472.,  79584.,  81728.,  83872.,  86016.,
      86032.,  88384.,  90736.,  93088.,  86528.,  88896.,  91264.,  93632.,
      87024.,  89408.,  91792.,  94176.,  87520.,  89920.,  92320.,  94720.,
      88016.,  90432.,  92848.,  95264.,  88512.,  90944.,  93376.,  95808.,
      89008.,  91456.,  93904.,  96352.,  89504.,  91968.,  94432.,  96896.,
      90000.,  92480.,  94960.,  97440.,  90496.,  92992.,  95488.,  97984.,
      90992.,  93504.,  96016.,  98528.,  91488.,  94016.,  96544.,  99072.,
      91984.,  94528.,  97072.,  99616.,  92480.,  95040.,  97600.,  100160.,
      92976.,  95552.,  98128.,  100704., 93472.,  96064.,  98656.,  101248.,
      93968.,  96576.,  99184.,  101792., 94464.,  97088.,  99712.,  102336.,
      94960.,  97600.,  100240., 102880., 95456.,  98112.,  100768., 103424.,
      95952.,  98624.,  101296., 103968., 96448.,  99136.,  101824., 104512.,
      96944.,  99648.,  102352., 105056., 97440.,  100160., 102880., 105600.,
      97936.,  100672., 103408., 106144., 98432.,  101184., 103936., 106688.,
      98928.,  101696., 104464., 107232., 99424.,  102208., 104992., 107776.,
      105872., 108864., 111856., 114848., 106368., 109376., 112384., 115392.,
      106864., 109888., 112912., 115936., 107360., 110400., 113440., 116480.,
      107856., 110912., 113968., 117024., 108352., 111424., 114496., 117568.,
      108848., 111936., 115024., 118112., 109344., 112448., 115552., 118656.,
      109840., 112960., 116080., 119200., 110336., 113472., 116608., 119744.,
      110832., 113984., 117136., 120288., 111328., 114496., 117664., 120832.,
      111824., 115008., 118192., 121376., 112320., 115520., 118720., 121920.,
      112816., 116032., 119248., 122464., 113312., 116544., 119776., 123008.,
      113808., 117056., 120304., 123552., 114304., 117568., 120832., 124096.,
      114800., 118080., 121360., 124640., 115296., 118592., 121888., 125184.,
      115792., 119104., 122416., 125728., 116288., 119616., 122944., 126272.,
      116784., 120128., 123472., 126816., 117280., 120640., 124000., 127360.,
      117776., 121152., 124528., 127904., 118272., 121664., 125056., 128448.,
      118768., 122176., 125584., 128992., 119264., 122688., 126112., 129536.,
      125712., 129344., 132976., 136608., 126208., 129856., 133504., 137152.,
      126704., 130368., 134032., 137696., 127200., 130880., 134560., 138240.,
      127696., 131392., 135088., 138784., 128192., 131904., 135616., 139328.,
      128688., 132416., 136144., 139872., 129184., 132928., 136672., 140416.,
      129680., 133440., 137200., 140960., 130176., 133952., 137728., 141504.,
      130672., 134464., 138256., 142048., 131168., 134976., 138784., 142592.,
      131664., 135488., 139312., 143136., 132160., 136000., 139840., 143680.,
      132656., 136512., 140368., 144224., 133152., 137024., 140896., 144768.,
      133648., 137536., 141424., 145312., 134144., 138048., 141952., 145856.,
      134640., 138560., 142480., 146400., 135136., 139072., 143008., 146944.,
      135632., 139584., 143536., 147488., 136128., 140096., 144064., 148032.,
      136624., 140608., 144592., 148576., 137120., 141120., 145120., 149120.,
      137616., 141632., 145648., 149664., 138112., 142144., 146176., 150208.,
      138608., 142656., 146704., 150752., 139104., 143168., 147232., 151296.,
      145552., 149824., 154096., 158368., 146048., 150336., 154624., 158912.,
      146544., 150848., 155152., 159456., 147040., 151360., 155680., 160000.,
      147536., 151872., 156208., 160544., 148032., 152384., 156736., 161088.,
      148528., 152896., 157264., 161632., 149024., 153408., 157792., 162176.,
      149520., 153920., 158320., 162720., 150016., 154432., 158848., 163264.,
      150512., 154944., 159376., 163808., 151008., 155456., 159904., 164352.,
      151504., 155968., 160432., 164896., 152000., 156480., 160960., 165440.,
      152496., 156992., 161488., 165984., 152992., 157504., 162016., 166528.,
      153488., 158016., 162544., 167072., 153984., 158528., 163072., 167616.,
      154480., 159040., 163600., 168160., 154976., 159552., 164128., 168704.,
      155472., 160064., 164656., 169248., 155968., 160576., 165184., 169792.,
      156464., 161088., 165712., 170336., 156960., 161600., 166240., 170880.,
      157456., 162112., 166768., 171424., 157952., 162624., 167296., 171968.,
      158448., 163136., 167824., 172512., 158944., 163648., 168352., 173056.,
      165392., 170304., 175216., 180128., 165888., 170816., 175744., 180672.,
      166384., 171328., 176272., 181216., 166880., 171840., 176800., 181760.,
      167376., 172352., 177328., 182304., 167872., 172864., 177856., 182848.,
      168368., 173376., 178384., 183392., 168864., 173888., 178912., 183936.,
      169360., 174400., 179440., 184480., 169856., 174912., 179968., 185024.,
      170352., 175424., 180496., 185568., 170848., 175936., 181024., 186112.,
      171344., 176448., 181552., 186656., 171840., 176960., 182080., 187200.,
      172336., 177472., 182608., 187744., 172832., 177984., 183136., 188288.,
      173328., 178496., 183664., 188832., 173824., 179008., 184192., 189376.,
      174320., 179520., 184720., 189920., 174816., 180032., 185248., 190464.,
      175312., 180544., 185776., 191008., 175808., 181056., 186304., 191552.,
      176304., 181568., 186832., 192096., 176800., 182080., 187360., 192640.,
      177296., 182592., 187888., 193184., 177792., 183104., 188416., 193728.,
      178288., 183616., 188944., 194272., 178784., 184128., 189472., 194816.};
  const std::array<int, 4> in_shape = {{1, 10, 10, 4}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, SAME3x8x8x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      899300.,  1080435., 1261960., 1443860., 1264480., 1084755., 904700.,
      1092720., 1312362., 1532328., 1752600., 1534344., 1315818., 1097040.,
      1288420., 1546881., 1805552., 2064412., 1806728., 1548897., 1290940.,
      1485440., 1782840., 2080288., 2377760., 2080288., 1782840., 1485440.,
      1290940., 1548897., 1806728., 2064412., 1805552., 1546881., 1288420.,
      1097040., 1315818., 1534344., 1752600., 1532328., 1312362., 1092720.,
      904700.,  1084755., 1264480., 1443860., 1261960., 1080435., 899300.};
  const std::array<int, 4> in_shape = {{3, 8, 8, 1}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, VALID3x8x8x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      7520.,  7598.,  7676.,  7754.,  7832.,  7910.,  7988.,  8144.,  8222.,
      8300.,  8378.,  8456.,  8534.,  8612.,  8768.,  8846.,  8924.,  9002.,
      9080.,  9158.,  9236.,  9392.,  9470.,  9548.,  9626.,  9704.,  9782.,
      9860.,  10016., 10094., 10172., 10250., 10328., 10406., 10484., 10640.,
      10718., 10796., 10874., 10952., 11030., 11108., 11264., 11342., 11420.,
      11498., 11576., 11654., 11732.};
  const std::array<int, 4> in_shape = {{3, 8, 8, 1}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, SAME3x8x8x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1792375., 1798600., 2153355., 2160870., 2515100., 2523920., 2877580.,
      2887720., 2520035., 2528960., 2161815., 2169510., 1802950., 1809400.,
      2177610., 2185440., 2615274., 2624724., 3053568., 3064656., 3492456.,
      3505200., 3057474., 3068688., 2621970., 2631636., 2185980., 2194080.,
      2567285., 2576840., 3082233., 3093762., 3597580., 3611104., 4113284.,
      4128824., 3599785., 3613456., 3086013., 3097794., 2572010., 2581880.,
      2959480., 2970880., 3551928., 3565680., 4144448., 4160576., 4736992.,
      4755520., 4144280., 4160576., 3551640., 3565680., 2959120., 2970880.,
      2571485., 2581880., 3085257., 3097794., 3598756., 3613456., 4111940.,
      4128824., 3596257., 3611104., 3080973., 3093762., 2566130., 2576840.,
      2184810., 2194080., 2620458., 2631636., 3055584., 3068688., 3490152.,
      3505200., 3051426., 3064656., 2613330., 2624724., 2175900., 2185440.,
      1801375., 1809400., 2159835., 2169510., 2517620., 2528960., 2874700.,
      2887720., 2512475., 2523920., 2151015., 2160870., 1790350., 1798600.};
  const std::array<int, 4> in_shape = {{3, 8, 8, 1}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, VALID3x8x8x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      14206., 15040., 14350., 15196., 14494., 15352., 14638., 15508., 14782.,
      15664., 14926., 15820., 15070., 15976., 15358., 16288., 15502., 16444.,
      15646., 16600., 15790., 16756., 15934., 16912., 16078., 17068., 16222.,
      17224., 16510., 17536., 16654., 17692., 16798., 17848., 16942., 18004.,
      17086., 18160., 17230., 18316., 17374., 18472., 17662., 18784., 17806.,
      18940., 17950., 19096., 18094., 19252., 18238., 19408., 18382., 19564.,
      18526., 19720., 18814., 20032., 18958., 20188., 19102., 20344., 19246.,
      20500., 19390., 20656., 19534., 20812., 19678., 20968., 19966., 21280.,
      20110., 21436., 20254., 21592., 20398., 21748., 20542., 21904., 20686.,
      22060., 20830., 22216., 21118., 22528., 21262., 22684., 21406., 22840.,
      21550., 22996., 21694., 23152., 21838., 23308., 21982., 23464.};
  const std::array<int, 4> in_shape = {{3, 8, 8, 1}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, SAME3x8x8x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      3578525., 3584750., 3590975., 3597200., 4299195., 4306710., 4314225.,
      4321740., 5021380., 5030200., 5039020., 5047840., 5745020., 5755160.,
      5765300., 5775440., 5031145., 5040070., 5048995., 5057920., 4315935.,
      4323630., 4331325., 4339020., 3599450., 3605900., 3612350., 3618800.,
      4347390., 4355220., 4363050., 4370880., 5221098., 5230548., 5239998.,
      5249448., 6096048., 6107136., 6118224., 6129312., 6972168., 6984912.,
      6997656., 7010400., 6103734., 6114948., 6126162., 6137376., 5234274.,
      5243940., 5253606., 5263272., 4363860., 4371960., 4380060., 4388160.,
      5125015., 5134570., 5144125., 5153680., 6152937., 6164466., 6175995.,
      6187524., 7181636., 7195160., 7208684., 7222208., 8211028., 8226568.,
      8242108., 8257648., 7185899., 7199570., 7213241., 7226912., 6160245.,
      6172026., 6183807., 6195588., 5134150., 5144020., 5153890., 5163760.,
      5907560., 5918960., 5930360., 5941760., 7090104., 7103856., 7117608.,
      7131360., 8272768., 8288896., 8305024., 8321152., 9455456., 9473984.,
      9492512., 9511040., 8272264., 8288560., 8304856., 8321152., 7089240.,
      7103280., 7117320., 7131360., 5906480., 5918240., 5930000., 5941760.,
      5132575., 5142970., 5153365., 5163760., 6157977., 6170514., 6183051.,
      6195588., 7182812., 7197512., 7212212., 7226912., 8206996., 8223880.,
      8240764., 8257648., 7177667., 7192514., 7207361., 7222208., 6149157.,
      6161946., 6174735., 6187524., 5121550., 5132260., 5142970., 5153680.,
      4360350., 4369620., 4378890., 4388160., 5229738., 5240916., 5252094.,
      5263272., 6098064., 6111168., 6124272., 6137376., 6965256., 6980304.,
      6995352., 7010400., 6089622., 6102852., 6116082., 6129312., 5215266.,
      5226660., 5238054., 5249448., 4342260., 4351800., 4361340., 4370880.,
      3594725., 3602750., 3610775., 3618800., 4309995., 4319670., 4329345.,
      4339020., 5023900., 5035240., 5046580., 5057920., 5736380., 5749400.,
      5762420., 5775440., 5013505., 5024950., 5036395., 5047840., 4292175.,
      4302030., 4311885., 4321740., 3572450., 3580700., 3588950., 3597200.};
  const std::array<int, 4> in_shape = {{3, 8, 8, 1}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, VALID3x8x8x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      27578., 28412., 29246., 30080., 27854., 28700., 29546., 30392., 28130.,
      28988., 29846., 30704., 28406., 29276., 30146., 31016., 28682., 29564.,
      30446., 31328., 28958., 29852., 30746., 31640., 29234., 30140., 31046.,
      31952., 29786., 30716., 31646., 32576., 30062., 31004., 31946., 32888.,
      30338., 31292., 32246., 33200., 30614., 31580., 32546., 33512., 30890.,
      31868., 32846., 33824., 31166., 32156., 33146., 34136., 31442., 32444.,
      33446., 34448., 31994., 33020., 34046., 35072., 32270., 33308., 34346.,
      35384., 32546., 33596., 34646., 35696., 32822., 33884., 34946., 36008.,
      33098., 34172., 35246., 36320., 33374., 34460., 35546., 36632., 33650.,
      34748., 35846., 36944., 34202., 35324., 36446., 37568., 34478., 35612.,
      36746., 37880., 34754., 35900., 37046., 38192., 35030., 36188., 37346.,
      38504., 35306., 36476., 37646., 38816., 35582., 36764., 37946., 39128.,
      35858., 37052., 38246., 39440., 36410., 37628., 38846., 40064., 36686.,
      37916., 39146., 40376., 36962., 38204., 39446., 40688., 37238., 38492.,
      39746., 41000., 37514., 38780., 40046., 41312., 37790., 39068., 40346.,
      41624., 38066., 39356., 40646., 41936., 38618., 39932., 41246., 42560.,
      38894., 40220., 41546., 42872., 39170., 40508., 41846., 43184., 39446.,
      40796., 42146., 43496., 39722., 41084., 42446., 43808., 39998., 41372.,
      42746., 44120., 40274., 41660., 43046., 44432., 40826., 42236., 43646.,
      45056., 41102., 42524., 43946., 45368., 41378., 42812., 44246., 45680.,
      41654., 43100., 44546., 45992., 41930., 43388., 44846., 46304., 42206.,
      43676., 45146., 46616., 42482., 43964., 45446., 46928.};
  const std::array<int, 4> in_shape = {{3, 8, 8, 1}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, SAME3x8x8x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1790350., 1798600., 2151015., 2160870., 2512475., 2523920., 2874700.,
      2887720., 2517620., 2528960., 2159835., 2169510., 1801375., 1809400.,
      2175900., 2185440., 2613330., 2624724., 3051426., 3064656., 3490152.,
      3505200., 3055584., 3068688., 2620458., 2631636., 2184810., 2194080.,
      2566130., 2576840., 3080973., 3093762., 3596257., 3611104., 4111940.,
      4128824., 3598756., 3613456., 3085257., 3097794., 2571485., 2581880.,
      2959120., 2970880., 3551640., 3565680., 4144280., 4160576., 4736992.,
      4755520., 4144448., 4160576., 3551928., 3565680., 2959480., 2970880.,
      2572010., 2581880., 3086013., 3097794., 3599785., 3613456., 4113284.,
      4128824., 3597580., 3611104., 3082233., 3093762., 2567285., 2576840.,
      2185980., 2194080., 2621970., 2631636., 3057474., 3068688., 3492456.,
      3505200., 3053568., 3064656., 2615274., 2624724., 2177610., 2185440.,
      1802950., 1809400., 2161815., 2169510., 2520035., 2528960., 2877580.,
      2887720., 2515100., 2523920., 2153355., 2160870., 1792375., 1798600.};
  const std::array<int, 4> in_shape = {{3, 8, 8, 2}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, VALID3x8x8x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      14962., 15040., 15118., 15196., 15274., 15352., 15430., 15508., 15586.,
      15664., 15742., 15820., 15898., 15976., 16210., 16288., 16366., 16444.,
      16522., 16600., 16678., 16756., 16834., 16912., 16990., 17068., 17146.,
      17224., 17458., 17536., 17614., 17692., 17770., 17848., 17926., 18004.,
      18082., 18160., 18238., 18316., 18394., 18472., 18706., 18784., 18862.,
      18940., 19018., 19096., 19174., 19252., 19330., 19408., 19486., 19564.,
      19642., 19720., 19954., 20032., 20110., 20188., 20266., 20344., 20422.,
      20500., 20578., 20656., 20734., 20812., 20890., 20968., 21202., 21280.,
      21358., 21436., 21514., 21592., 21670., 21748., 21826., 21904., 21982.,
      22060., 22138., 22216., 22450., 22528., 22606., 22684., 22762., 22840.,
      22918., 22996., 23074., 23152., 23230., 23308., 23386., 23464.};
  const std::array<int, 4> in_shape = {{3, 8, 8, 2}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, SAME3x8x8x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      3568325., 3580700., 3584750., 3597200., 4287090., 4302030., 4306710.,
      4321740., 5007415., 5024950., 5030200., 5047840., 5729240., 5749400.,
      5755160., 5775440., 5017495., 5035240., 5040070., 5057920., 4304370.,
      4319670., 4323630., 4339020., 3589925., 3602750., 3605900., 3618800.,
      4336230., 4351800., 4355220., 4370880., 5207868., 5226660., 5230548.,
      5249448., 6080802., 6102852., 6107136., 6129312., 6954960., 6980304.,
      6984912., 7010400., 6088866., 6111168., 6114948., 6137376., 5221692.,
      5240916., 5243940., 5263272., 4353510., 4369620., 4371960., 4388160.,
      5113255., 5132260., 5134570., 5153680., 6139014., 6161946., 6164466.,
      6187524., 7165613., 7192514., 7195160., 7222208., 8192968., 8223880.,
      8226568., 8257648., 7170317., 7197512., 7199570., 7226912., 6147078.,
      6170514., 6172026., 6195588., 5123335., 5142970., 5144020., 5163760.,
      5895560., 5918240., 5918960., 5941760., 7075920., 7103280., 7103856.,
      7131360., 8256472., 8288560., 8288896., 8321152., 9437120., 9473984.,
      9473984., 9511040., 8256472., 8288896., 8288560., 8321152., 7075920.,
      7103856., 7103280., 7131360., 5895560., 5918960., 5918240., 5941760.,
      5123335., 5144020., 5142970., 5163760., 6147078., 6172026., 6170514.,
      6195588., 7170317., 7199570., 7197512., 7226912., 8192968., 8226568.,
      8223880., 8257648., 7165613., 7195160., 7192514., 7222208., 6139014.,
      6164466., 6161946., 6187524., 5113255., 5134570., 5132260., 5153680.,
      4353510., 4371960., 4369620., 4388160., 5221692., 5243940., 5240916.,
      5263272., 6088866., 6114948., 6111168., 6137376., 6954960., 6984912.,
      6980304., 7010400., 6080802., 6107136., 6102852., 6129312., 5207868.,
      5230548., 5226660., 5249448., 4336230., 4355220., 4351800., 4370880.,
      3589925., 3605900., 3602750., 3618800., 4304370., 4323630., 4319670.,
      4339020., 5017495., 5040070., 5035240., 5057920., 5729240., 5755160.,
      5749400., 5775440., 5007415., 5030200., 5024950., 5047840., 4287090.,
      4306710., 4302030., 4321740., 3568325., 3584750., 3580700., 3597200.};
  const std::array<int, 4> in_shape = {{3, 8, 8, 2}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, VALID3x8x8x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      28268., 29924., 28412., 30080., 28556., 30236., 28700., 30392., 28844.,
      30548., 28988., 30704., 29132., 30860., 29276., 31016., 29420., 31172.,
      29564., 31328., 29708., 31484., 29852., 31640., 29996., 31796., 30140.,
      31952., 30572., 32420., 30716., 32576., 30860., 32732., 31004., 32888.,
      31148., 33044., 31292., 33200., 31436., 33356., 31580., 33512., 31724.,
      33668., 31868., 33824., 32012., 33980., 32156., 34136., 32300., 34292.,
      32444., 34448., 32876., 34916., 33020., 35072., 33164., 35228., 33308.,
      35384., 33452., 35540., 33596., 35696., 33740., 35852., 33884., 36008.,
      34028., 36164., 34172., 36320., 34316., 36476., 34460., 36632., 34604.,
      36788., 34748., 36944., 35180., 37412., 35324., 37568., 35468., 37724.,
      35612., 37880., 35756., 38036., 35900., 38192., 36044., 38348., 36188.,
      38504., 36332., 38660., 36476., 38816., 36620., 38972., 36764., 39128.,
      36908., 39284., 37052., 39440., 37484., 39908., 37628., 40064., 37772.,
      40220., 37916., 40376., 38060., 40532., 38204., 40688., 38348., 40844.,
      38492., 41000., 38636., 41156., 38780., 41312., 38924., 41468., 39068.,
      41624., 39212., 41780., 39356., 41936., 39788., 42404., 39932., 42560.,
      40076., 42716., 40220., 42872., 40364., 43028., 40508., 43184., 40652.,
      43340., 40796., 43496., 40940., 43652., 41084., 43808., 41228., 43964.,
      41372., 44120., 41516., 44276., 41660., 44432., 42092., 44900., 42236.,
      45056., 42380., 45212., 42524., 45368., 42668., 45524., 42812., 45680.,
      42956., 45836., 43100., 45992., 43244., 46148., 43388., 46304., 43532.,
      46460., 43676., 46616., 43820., 46772., 43964., 46928.};
  const std::array<int, 4> in_shape = {{3, 8, 8, 2}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, SAME3x8x8x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      3373875., 3386250., 3398625., 3411000., 3393850., 3406300., 3418750.,
      3431200., 4043400., 4058340., 4073280., 4088220., 4067190., 4082220.,
      4097250., 4112280., 4710895., 4728430., 4745965., 4763500., 4738440.,
      4756080., 4773720., 4791360., 5376240., 5396400., 5416560., 5436720.,
      5407480., 5427760., 5448040., 5468320., 4695005., 4712750., 4730495.,
      4748240., 4722130., 4739980., 4757830., 4775680., 4016160., 4031460.,
      4046760., 4062060., 4039230., 4054620., 4070010., 4085400., 3339825.,
      3352650., 3365475., 3378300., 3358900., 3371800., 3384700., 3397600.,
      4033530., 4049100., 4064670., 4080240., 4056060., 4071720., 4087380.,
      4103040., 4830480., 4849272., 4868064., 4886856., 4857300., 4876200.,
      4895100., 4914000., 5623842., 5645892., 5667942., 5689992., 5654880.,
      5677056., 5699232., 5721408., 6413472., 6438816., 6464160., 6489504.,
      6448656., 6474144., 6499632., 6525120., 5596710., 5619012., 5641314.,
      5663616., 5627244., 5649672., 5672100., 5694528., 4783968., 4803192.,
      4822416., 4841640., 4809924., 4829256., 4848588., 4867920., 3975390.,
      3991500., 4007610., 4023720., 3996840., 4013040., 4029240., 4045440.,
      4670225., 4689230., 4708235., 4727240., 4694830., 4713940., 4733050.,
      4752160., 5588856., 5611788., 5634720., 5657652., 5618130., 5641188.,
      5664246., 5687304., 6501957., 6528858., 6555759., 6582660., 6535816.,
      6562864., 6589912., 6616960., 7409360., 7440272., 7471184., 7502096.,
      7447720., 7478800., 7509880., 7540960., 6460895., 6488090., 6515285.,
      6542480., 6494166., 6521508., 6548850., 6576192., 5518464., 5541900.,
      5565336., 5588772., 5546730., 5570292., 5593854., 5617416., 4582235.,
      4601870., 4621505., 4641140., 4605580., 4625320., 4645060., 4664800.,
      5276280., 5298960., 5321640., 5344320., 5302480., 5325280., 5348080.,
      5370880., 6309312., 6336672., 6364032., 6391392., 6340464., 6367968.,
      6395472., 6422976., 7334488., 7366576., 7398664., 7430752., 7370496.,
      7402752., 7435008., 7467264., 8351616., 8388480., 8425344., 8462208.,
      8392384., 8429440., 8466496., 8503552., 7276808., 7309232., 7341656.,
      7374080., 7312144., 7344736., 7377328., 7409920., 6210432., 6238368.,
      6266304., 6294240., 6240432., 6268512., 6296592., 6324672., 5152680.,
      5176080., 5199480., 5222880., 5177440., 5200960., 5224480., 5248000.,
      4401985., 4422670., 4443355., 4464040., 4423230., 4444020., 4464810.,
      4485600., 5258904., 5283852., 5308800., 5333748., 5284146., 5309220.,
      5334294., 5359368., 6107605., 6136858., 6166111., 6195364., 6136760.,
      6166160., 6195560., 6224960., 6947920., 6981520., 7015120., 7048720.,
      6980904., 7014672., 7048440., 7082208., 6047727., 6077274., 6106821.,
      6136368., 6076294., 6105988., 6135682., 6165376., 5156256., 5181708.,
      5207160., 5232612., 5180490., 5206068., 5231646., 5257224., 4273675.,
      4294990., 4316305., 4337620., 4293660., 4315080., 4336500., 4357920.,
      3573690., 3592140., 3610590., 3629040., 3590460., 3609000., 3627540.,
      3646080., 4264848., 4287096., 4309344., 4331592., 4284756., 4307112.,
      4329468., 4351824., 4947810., 4973892., 4999974., 5026056., 4970784.,
      4996992., 5023200., 5049408., 5622432., 5652384., 5682336., 5712288.,
      5648400., 5678496., 5708592., 5738688., 4888422., 4914756., 4941090.,
      4967424., 4910892., 4937352., 4963812., 4990272., 4163040., 4185720.,
      4208400., 4231080., 4182084., 4204872., 4227660., 4250448., 3446430.,
      3465420., 3484410., 3503400., 3462120., 3481200., 3500280., 3519360.,
      2799075., 2815050., 2831025., 2847000., 2811850., 2827900., 2843950.,
      2860000., 3336360., 3355620., 3374880., 3394140., 3351510., 3370860.,
      3390210., 3409560., 3865855., 3888430., 3911005., 3933580., 3883320.,
      3906000., 3928680., 3951360., 4387440., 4413360., 4439280., 4465200.,
      4407160., 4433200., 4459240., 4485280., 3809645., 3832430., 3855215.,
      3878000., 3826690., 3849580., 3872470., 3895360., 3240000., 3259620.,
      3279240., 3298860., 3254430., 3274140., 3293850., 3313560., 2678625.,
      2695050., 2711475., 2727900., 2690500., 2707000., 2723500., 2740000.};
  const std::array<int, 4> in_shape = {{3, 8, 8, 2}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 512.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, VALID3x8x8x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      54880., 56536., 58192., 59848., 55156., 56824., 58492., 60160., 55432.,
      57112., 58792., 60472., 55708., 57400., 59092., 60784., 55984., 57688.,
      59392., 61096., 56260., 57976., 59692., 61408., 56536., 58264., 59992.,
      61720., 56812., 58552., 60292., 62032., 57088., 58840., 60592., 62344.,
      57364., 59128., 60892., 62656., 57640., 59416., 61192., 62968., 57916.,
      59704., 61492., 63280., 58192., 59992., 61792., 63592., 58468., 60280.,
      62092., 63904., 59296., 61144., 62992., 64840., 59572., 61432., 63292.,
      65152., 59848., 61720., 63592., 65464., 60124., 62008., 63892., 65776.,
      60400., 62296., 64192., 66088., 60676., 62584., 64492., 66400., 60952.,
      62872., 64792., 66712., 61228., 63160., 65092., 67024., 61504., 63448.,
      65392., 67336., 61780., 63736., 65692., 67648., 62056., 64024., 65992.,
      67960., 62332., 64312., 66292., 68272., 62608., 64600., 66592., 68584.,
      62884., 64888., 66892., 68896., 63712., 65752., 67792., 69832., 63988.,
      66040., 68092., 70144., 64264., 66328., 68392., 70456., 64540., 66616.,
      68692., 70768., 64816., 66904., 68992., 71080., 65092., 67192., 69292.,
      71392., 65368., 67480., 69592., 71704., 65644., 67768., 69892., 72016.,
      65920., 68056., 70192., 72328., 66196., 68344., 70492., 72640., 66472.,
      68632., 70792., 72952., 66748., 68920., 71092., 73264., 67024., 69208.,
      71392., 73576., 67300., 69496., 71692., 73888., 68128., 70360., 72592.,
      74824., 68404., 70648., 72892., 75136., 68680., 70936., 73192., 75448.,
      68956., 71224., 73492., 75760., 69232., 71512., 73792., 76072., 69508.,
      71800., 74092., 76384., 69784., 72088., 74392., 76696., 70060., 72376.,
      74692., 77008., 70336., 72664., 74992., 77320., 70612., 72952., 75292.,
      77632., 70888., 73240., 75592., 77944., 71164., 73528., 75892., 78256.,
      71440., 73816., 76192., 78568., 71716., 74104., 76492., 78880., 72544.,
      74968., 77392., 79816., 72820., 75256., 77692., 80128., 73096., 75544.,
      77992., 80440., 73372., 75832., 78292., 80752., 73648., 76120., 78592.,
      81064., 73924., 76408., 78892., 81376., 74200., 76696., 79192., 81688.,
      74476., 76984., 79492., 82000., 74752., 77272., 79792., 82312., 75028.,
      77560., 80092., 82624., 75304., 77848., 80392., 82936., 75580., 78136.,
      80692., 83248., 75856., 78424., 80992., 83560., 76132., 78712., 81292.,
      83872., 76960., 79576., 82192., 84808., 77236., 79864., 82492., 85120.,
      77512., 80152., 82792., 85432., 77788., 80440., 83092., 85744., 78064.,
      80728., 83392., 86056., 78340., 81016., 83692., 86368., 78616., 81304.,
      83992., 86680., 78892., 81592., 84292., 86992., 79168., 81880., 84592.,
      87304., 79444., 82168., 84892., 87616., 79720., 82456., 85192., 87928.,
      79996., 82744., 85492., 88240., 80272., 83032., 85792., 88552., 80548.,
      83320., 86092., 88864., 81376., 84184., 86992., 89800., 81652., 84472.,
      87292., 90112., 81928., 84760., 87592., 90424., 82204., 85048., 87892.,
      90736., 82480., 85336., 88192., 91048., 82756., 85624., 88492., 91360.,
      83032., 85912., 88792., 91672., 83308., 86200., 89092., 91984., 83584.,
      86488., 89392., 92296., 83860., 86776., 89692., 92608., 84136., 87064.,
      89992., 92920., 84412., 87352., 90292., 93232., 84688., 87640., 90592.,
      93544., 84964., 87928., 90892., 93856.};
  const std::array<int, 4> in_shape = {{3, 8, 8, 2}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, SAME3x8x8x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      3572450., 3580700., 3588950., 3597200., 4292175., 4302030., 4311885.,
      4321740., 5013505., 5024950., 5036395., 5047840., 5736380., 5749400.,
      5762420., 5775440., 5023900., 5035240., 5046580., 5057920., 4309995.,
      4319670., 4329345., 4339020., 3594725., 3602750., 3610775., 3618800.,
      4342260., 4351800., 4361340., 4370880., 5215266., 5226660., 5238054.,
      5249448., 6089622., 6102852., 6116082., 6129312., 6965256., 6980304.,
      6995352., 7010400., 6098064., 6111168., 6124272., 6137376., 5229738.,
      5240916., 5252094., 5263272., 4360350., 4369620., 4378890., 4388160.,
      5121550., 5132260., 5142970., 5153680., 6149157., 6161946., 6174735.,
      6187524., 7177667., 7192514., 7207361., 7222208., 8206996., 8223880.,
      8240764., 8257648., 7182812., 7197512., 7212212., 7226912., 6157977.,
      6170514., 6183051., 6195588., 5132575., 5142970., 5153365., 5163760.,
      5906480., 5918240., 5930000., 5941760., 7089240., 7103280., 7117320.,
      7131360., 8272264., 8288560., 8304856., 8321152., 9455456., 9473984.,
      9492512., 9511040., 8272768., 8288896., 8305024., 8321152., 7090104.,
      7103856., 7117608., 7131360., 5907560., 5918960., 5930360., 5941760.,
      5134150., 5144020., 5153890., 5163760., 6160245., 6172026., 6183807.,
      6195588., 7185899., 7199570., 7213241., 7226912., 8211028., 8226568.,
      8242108., 8257648., 7181636., 7195160., 7208684., 7222208., 6152937.,
      6164466., 6175995., 6187524., 5125015., 5134570., 5144125., 5153680.,
      4363860., 4371960., 4380060., 4388160., 5234274., 5243940., 5253606.,
      5263272., 6103734., 6114948., 6126162., 6137376., 6972168., 6984912.,
      6997656., 7010400., 6096048., 6107136., 6118224., 6129312., 5221098.,
      5230548., 5239998., 5249448., 4347390., 4355220., 4363050., 4370880.,
      3599450., 3605900., 3612350., 3618800., 4315935., 4323630., 4331325.,
      4339020., 5031145., 5040070., 5048995., 5057920., 5745020., 5755160.,
      5765300., 5775440., 5021380., 5030200., 5039020., 5047840., 4299195.,
      4306710., 4314225., 4321740., 3578525., 3584750., 3590975., 3597200.};
  const std::array<int, 4> in_shape = {{3, 8, 8, 4}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, VALID3x8x8x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      29846., 29924., 30002., 30080., 30158., 30236., 30314., 30392., 30470.,
      30548., 30626., 30704., 30782., 30860., 30938., 31016., 31094., 31172.,
      31250., 31328., 31406., 31484., 31562., 31640., 31718., 31796., 31874.,
      31952., 32342., 32420., 32498., 32576., 32654., 32732., 32810., 32888.,
      32966., 33044., 33122., 33200., 33278., 33356., 33434., 33512., 33590.,
      33668., 33746., 33824., 33902., 33980., 34058., 34136., 34214., 34292.,
      34370., 34448., 34838., 34916., 34994., 35072., 35150., 35228., 35306.,
      35384., 35462., 35540., 35618., 35696., 35774., 35852., 35930., 36008.,
      36086., 36164., 36242., 36320., 36398., 36476., 36554., 36632., 36710.,
      36788., 36866., 36944., 37334., 37412., 37490., 37568., 37646., 37724.,
      37802., 37880., 37958., 38036., 38114., 38192., 38270., 38348., 38426.,
      38504., 38582., 38660., 38738., 38816., 38894., 38972., 39050., 39128.,
      39206., 39284., 39362., 39440., 39830., 39908., 39986., 40064., 40142.,
      40220., 40298., 40376., 40454., 40532., 40610., 40688., 40766., 40844.,
      40922., 41000., 41078., 41156., 41234., 41312., 41390., 41468., 41546.,
      41624., 41702., 41780., 41858., 41936., 42326., 42404., 42482., 42560.,
      42638., 42716., 42794., 42872., 42950., 43028., 43106., 43184., 43262.,
      43340., 43418., 43496., 43574., 43652., 43730., 43808., 43886., 43964.,
      44042., 44120., 44198., 44276., 44354., 44432., 44822., 44900., 44978.,
      45056., 45134., 45212., 45290., 45368., 45446., 45524., 45602., 45680.,
      45758., 45836., 45914., 45992., 46070., 46148., 46226., 46304., 46382.,
      46460., 46538., 46616., 46694., 46772., 46850., 46928.};
  const std::array<int, 4> in_shape = {{3, 8, 8, 4}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, SAME3x8x8x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      2678625., 2690500., 2695050., 2707000., 2711475., 2723500., 2727900.,
      2740000., 3240000., 3254430., 3259620., 3274140., 3279240., 3293850.,
      3298860., 3313560., 3809645., 3826690., 3832430., 3849580., 3855215.,
      3872470., 3878000., 3895360., 4387440., 4407160., 4413360., 4433200.,
      4439280., 4459240., 4465200., 4485280., 3865855., 3883320., 3888430.,
      3906000., 3911005., 3928680., 3933580., 3951360., 3336360., 3351510.,
      3355620., 3370860., 3374880., 3390210., 3394140., 3409560., 2799075.,
      2811850., 2815050., 2827900., 2831025., 2843950., 2847000., 2860000.,
      3446430., 3462120., 3465420., 3481200., 3484410., 3500280., 3503400.,
      3519360., 4163040., 4182084., 4185720., 4204872., 4208400., 4227660.,
      4231080., 4250448., 4888422., 4910892., 4914756., 4937352., 4941090.,
      4963812., 4967424., 4990272., 5622432., 5648400., 5652384., 5678496.,
      5682336., 5708592., 5712288., 5738688., 4947810., 4970784., 4973892.,
      4996992., 4999974., 5023200., 5026056., 5049408., 4264848., 4284756.,
      4287096., 4307112., 4309344., 4329468., 4331592., 4351824., 3573690.,
      3590460., 3592140., 3609000., 3610590., 3627540., 3629040., 3646080.,
      4273675., 4293660., 4294990., 4315080., 4316305., 4336500., 4337620.,
      4357920., 5156256., 5180490., 5181708., 5206068., 5207160., 5231646.,
      5232612., 5257224., 6047727., 6076294., 6077274., 6105988., 6106821.,
      6135682., 6136368., 6165376., 6947920., 6980904., 6981520., 7014672.,
      7015120., 7048440., 7048720., 7082208., 6107605., 6136760., 6136858.,
      6166160., 6166111., 6195560., 6195364., 6224960., 5258904., 5284146.,
      5283852., 5309220., 5308800., 5334294., 5333748., 5359368., 4401985.,
      4423230., 4422670., 4444020., 4443355., 4464810., 4464040., 4485600.,
      5152680., 5177440., 5176080., 5200960., 5199480., 5224480., 5222880.,
      5248000., 6210432., 6240432., 6238368., 6268512., 6266304., 6296592.,
      6294240., 6324672., 7276808., 7312144., 7309232., 7344736., 7341656.,
      7377328., 7374080., 7409920., 8351616., 8392384., 8388480., 8429440.,
      8425344., 8466496., 8462208., 8503552., 7334488., 7370496., 7366576.,
      7402752., 7398664., 7435008., 7430752., 7467264., 6309312., 6340464.,
      6336672., 6367968., 6364032., 6395472., 6391392., 6422976., 5276280.,
      5302480., 5298960., 5325280., 5321640., 5348080., 5344320., 5370880.,
      4582235., 4605580., 4601870., 4625320., 4621505., 4645060., 4641140.,
      4664800., 5518464., 5546730., 5541900., 5570292., 5565336., 5593854.,
      5588772., 5617416., 6460895., 6494166., 6488090., 6521508., 6515285.,
      6548850., 6542480., 6576192., 7409360., 7447720., 7440272., 7478800.,
      7471184., 7509880., 7502096., 7540960., 6501957., 6535816., 6528858.,
      6562864., 6555759., 6589912., 6582660., 6616960., 5588856., 5618130.,
      5611788., 5641188., 5634720., 5664246., 5657652., 5687304., 4670225.,
      4694830., 4689230., 4713940., 4708235., 4733050., 4727240., 4752160.,
      3975390., 3996840., 3991500., 4013040., 4007610., 4029240., 4023720.,
      4045440., 4783968., 4809924., 4803192., 4829256., 4822416., 4848588.,
      4841640., 4867920., 5596710., 5627244., 5619012., 5649672., 5641314.,
      5672100., 5663616., 5694528., 6413472., 6448656., 6438816., 6474144.,
      6464160., 6499632., 6489504., 6525120., 5623842., 5654880., 5645892.,
      5677056., 5667942., 5699232., 5689992., 5721408., 4830480., 4857300.,
      4849272., 4876200., 4868064., 4895100., 4886856., 4914000., 4033530.,
      4056060., 4049100., 4071720., 4064670., 4087380., 4080240., 4103040.,
      3339825., 3358900., 3352650., 3371800., 3365475., 3384700., 3378300.,
      3397600., 4016160., 4039230., 4031460., 4054620., 4046760., 4070010.,
      4062060., 4085400., 4695005., 4722130., 4712750., 4739980., 4730495.,
      4757830., 4748240., 4775680., 5376240., 5407480., 5396400., 5427760.,
      5416560., 5448040., 5436720., 5468320., 4710895., 4738440., 4728430.,
      4756080., 4745965., 4773720., 4763500., 4791360., 4043400., 4067190.,
      4058340., 4082220., 4073280., 4097250., 4088220., 4112280., 3373875.,
      3393850., 3386250., 3406300., 3398625., 3418750., 3411000., 3431200.};
  const std::array<int, 4> in_shape = {{3, 8, 8, 4}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 512.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, VALID3x8x8x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      56392., 59692., 56536., 59848., 56680., 60004., 56824., 60160., 56968.,
      60316., 57112., 60472., 57256., 60628., 57400., 60784., 57544., 60940.,
      57688., 61096., 57832., 61252., 57976., 61408., 58120., 61564., 58264.,
      61720., 58408., 61876., 58552., 62032., 58696., 62188., 58840., 62344.,
      58984., 62500., 59128., 62656., 59272., 62812., 59416., 62968., 59560.,
      63124., 59704., 63280., 59848., 63436., 59992., 63592., 60136., 63748.,
      60280., 63904., 61000., 64684., 61144., 64840., 61288., 64996., 61432.,
      65152., 61576., 65308., 61720., 65464., 61864., 65620., 62008., 65776.,
      62152., 65932., 62296., 66088., 62440., 66244., 62584., 66400., 62728.,
      66556., 62872., 66712., 63016., 66868., 63160., 67024., 63304., 67180.,
      63448., 67336., 63592., 67492., 63736., 67648., 63880., 67804., 64024.,
      67960., 64168., 68116., 64312., 68272., 64456., 68428., 64600., 68584.,
      64744., 68740., 64888., 68896., 65608., 69676., 65752., 69832., 65896.,
      69988., 66040., 70144., 66184., 70300., 66328., 70456., 66472., 70612.,
      66616., 70768., 66760., 70924., 66904., 71080., 67048., 71236., 67192.,
      71392., 67336., 71548., 67480., 71704., 67624., 71860., 67768., 72016.,
      67912., 72172., 68056., 72328., 68200., 72484., 68344., 72640., 68488.,
      72796., 68632., 72952., 68776., 73108., 68920., 73264., 69064., 73420.,
      69208., 73576., 69352., 73732., 69496., 73888., 70216., 74668., 70360.,
      74824., 70504., 74980., 70648., 75136., 70792., 75292., 70936., 75448.,
      71080., 75604., 71224., 75760., 71368., 75916., 71512., 76072., 71656.,
      76228., 71800., 76384., 71944., 76540., 72088., 76696., 72232., 76852.,
      72376., 77008., 72520., 77164., 72664., 77320., 72808., 77476., 72952.,
      77632., 73096., 77788., 73240., 77944., 73384., 78100., 73528., 78256.,
      73672., 78412., 73816., 78568., 73960., 78724., 74104., 78880., 74824.,
      79660., 74968., 79816., 75112., 79972., 75256., 80128., 75400., 80284.,
      75544., 80440., 75688., 80596., 75832., 80752., 75976., 80908., 76120.,
      81064., 76264., 81220., 76408., 81376., 76552., 81532., 76696., 81688.,
      76840., 81844., 76984., 82000., 77128., 82156., 77272., 82312., 77416.,
      82468., 77560., 82624., 77704., 82780., 77848., 82936., 77992., 83092.,
      78136., 83248., 78280., 83404., 78424., 83560., 78568., 83716., 78712.,
      83872., 79432., 84652., 79576., 84808., 79720., 84964., 79864., 85120.,
      80008., 85276., 80152., 85432., 80296., 85588., 80440., 85744., 80584.,
      85900., 80728., 86056., 80872., 86212., 81016., 86368., 81160., 86524.,
      81304., 86680., 81448., 86836., 81592., 86992., 81736., 87148., 81880.,
      87304., 82024., 87460., 82168., 87616., 82312., 87772., 82456., 87928.,
      82600., 88084., 82744., 88240., 82888., 88396., 83032., 88552., 83176.,
      88708., 83320., 88864., 84040., 89644., 84184., 89800., 84328., 89956.,
      84472., 90112., 84616., 90268., 84760., 90424., 84904., 90580., 85048.,
      90736., 85192., 90892., 85336., 91048., 85480., 91204., 85624., 91360.,
      85768., 91516., 85912., 91672., 86056., 91828., 86200., 91984., 86344.,
      92140., 86488., 92296., 86632., 92452., 86776., 92608., 86920., 92764.,
      87064., 92920., 87208., 93076., 87352., 93232., 87496., 93388., 87640.,
      93544., 87784., 93700., 87928., 93856.};
  const std::array<int, 4> in_shape = {{3, 8, 8, 4}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, SAME3x8x8x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      4410975.,  4422850.,  4434725.,  4446600.,  4430950.,  4442900.,
      4454850.,  4466800.,  4450925.,  4462950.,  4474975.,  4487000.,
      4470900.,  4483000.,  4495100.,  4507200.,  5313570.,  5328000.,
      5342430.,  5356860.,  5337360.,  5351880.,  5366400.,  5380920.,
      5361150.,  5375760.,  5390370.,  5404980.,  5384940.,  5399640.,
      5414340.,  5429040.,  6222405.,  6239450.,  6256495.,  6273540.,
      6249950.,  6267100.,  6284250.,  6301400.,  6277495.,  6294750.,
      6312005.,  6329260.,  6305040.,  6322400.,  6339760.,  6357120.,
      7137240.,  7156960.,  7176680.,  7196400.,  7168480.,  7188320.,
      7208160.,  7228000.,  7199720.,  7219680.,  7239640.,  7259600.,
      7230960.,  7251040.,  7271120.,  7291200.,  6262725.,  6280190.,
      6297655.,  6315120.,  6289850.,  6307420.,  6324990.,  6342560.,
      6316975.,  6334650.,  6352325.,  6370000.,  6344100.,  6361880.,
      6379660.,  6397440.,  5382690.,  5397840.,  5412990.,  5428140.,
      5405760.,  5421000.,  5436240.,  5451480.,  5428830.,  5444160.,
      5459490.,  5474820.,  5451900.,  5467320.,  5482740.,  5498160.,
      4497375.,  4510150.,  4522925.,  4535700.,  4516450.,  4529300.,
      4542150.,  4555000.,  4535525.,  4548450.,  4561375.,  4574300.,
      4554600.,  4567600.,  4580600.,  4593600.,  5510130.,  5525820.,
      5541510.,  5557200.,  5532660.,  5548440.,  5564220.,  5580000.,
      5555190.,  5571060.,  5586930.,  5602800.,  5577720.,  5593680.,
      5609640.,  5625600.,  6629724.,  6648768.,  6667812.,  6686856.,
      6656544.,  6675696.,  6694848.,  6714000.,  6683364.,  6702624.,
      6721884.,  6741144.,  6710184.,  6729552.,  6748920.,  6768288.,
      7754502.,  7776972.,  7799442.,  7821912.,  7785540.,  7808136.,
      7830732.,  7853328.,  7816578.,  7839300.,  7862022.,  7884744.,
      7847616.,  7870464.,  7893312.,  7916160.,  8884176.,  8910144.,
      8936112.,  8962080.,  8919360.,  8945472.,  8971584.,  8997696.,
      8954544.,  8980800.,  9007056.,  9033312.,  8989728.,  9016128.,
      9042528.,  9068928.,  7786758.,  7809732.,  7832706.,  7855680.,
      7817292.,  7840392.,  7863492.,  7886592.,  7847826.,  7871052.,
      7894278.,  7917504.,  7878360.,  7901712.,  7925064.,  7948416.,
      6685020.,  6704928.,  6724836.,  6744744.,  6710976.,  6730992.,
      6751008.,  6771024.,  6736932.,  6757056.,  6777180.,  6797304.,
      6762888.,  6783120.,  6803352.,  6823584.,  5579250.,  5596020.,
      5612790.,  5629560.,  5600700.,  5617560.,  5634420.,  5651280.,
      5622150.,  5639100.,  5656050.,  5673000.,  5643600.,  5660640.,
      5677680.,  5694720.,  6645765.,  6665750.,  6685735.,  6705720.,
      6670370.,  6690460.,  6710550.,  6730640.,  6694975.,  6715170.,
      6735365.,  6755560.,  6719580.,  6739880.,  6760180.,  6780480.,
      7987350.,  8011584.,  8035818.,  8060052.,  8016624.,  8040984.,
      8065344.,  8089704.,  8045898.,  8070384.,  8094870.,  8119356.,
      8075172.,  8099784.,  8124396.,  8149008.,  9332295.,  9360862.,
      9389429.,  9417996.,  9366154.,  9394868.,  9423582.,  9452296.,
      9400013.,  9428874.,  9457735.,  9486596.,  9433872.,  9462880.,
      9491888.,  9520896.,  10680264., 10713248., 10746232., 10779216.,
      10718624., 10751776., 10784928., 10818080., 10756984., 10790304.,
      10823624., 10856944., 10795344., 10828832., 10862320., 10895808.,
      9351111.,  9380266.,  9409421.,  9438576.,  9384382.,  9413684.,
      9442986.,  9472288.,  9417653.,  9447102.,  9476551.,  9506000.,
      9450924.,  9480520.,  9510116.,  9539712.,  8019606.,  8044848.,
      8070090.,  8095332.,  8047872.,  8073240.,  8098608.,  8123976.,
      8076138.,  8101632.,  8127126.,  8152620.,  8104404.,  8130024.,
      8155644.,  8181264.,  6686085.,  6707330.,  6728575.,  6749820.,
      6709430.,  6730780.,  6752130.,  6773480.,  6732775.,  6754230.,
      6775685.,  6797140.,  6756120.,  6777680.,  6799240.,  6820800.,
      7802520.,  7827280.,  7852040.,  7876800.,  7828720.,  7853600.,
      7878480.,  7903360.,  7854920.,  7879920.,  7904920.,  7929920.,
      7881120.,  7906240.,  7931360.,  7956480.,  9368016.,  9398016.,
      9428016.,  9458016.,  9399168.,  9429312.,  9459456.,  9489600.,
      9430320.,  9460608.,  9490896.,  9521184.,  9461472.,  9491904.,
      9522336.,  9552768.,  10934280., 10969616., 11004952., 11040288.,
      10970288., 11005792., 11041296., 11076800., 11006296., 11041968.,
      11077640., 11113312., 11042304., 11078144., 11113984., 11149824.,
      12500928., 12541696., 12582464., 12623232., 12541696., 12582656.,
      12623616., 12664576., 12582464., 12623616., 12664768., 12705920.,
      12623232., 12664576., 12705920., 12747264., 10934280., 10970288.,
      11006296., 11042304., 10969616., 11005792., 11041968., 11078144.,
      11004952., 11041296., 11077640., 11113984., 11040288., 11076800.,
      11113312., 11149824., 9368016.,  9399168.,  9430320.,  9461472.,
      9398016.,  9429312.,  9460608.,  9491904.,  9428016.,  9459456.,
      9490896.,  9522336.,  9458016.,  9489600.,  9521184.,  9552768.,
      7802520.,  7828720.,  7854920.,  7881120.,  7827280.,  7853600.,
      7879920.,  7906240.,  7852040.,  7878480.,  7904920.,  7931360.,
      7876800.,  7903360.,  7929920.,  7956480.,  6686085.,  6709430.,
      6732775.,  6756120.,  6707330.,  6730780.,  6754230.,  6777680.,
      6728575.,  6752130.,  6775685.,  6799240.,  6749820.,  6773480.,
      6797140.,  6820800.,  8019606.,  8047872.,  8076138.,  8104404.,
      8044848.,  8073240.,  8101632.,  8130024.,  8070090.,  8098608.,
      8127126.,  8155644.,  8095332.,  8123976.,  8152620.,  8181264.,
      9351111.,  9384382.,  9417653.,  9450924.,  9380266.,  9413684.,
      9447102.,  9480520.,  9409421.,  9442986.,  9476551.,  9510116.,
      9438576.,  9472288.,  9506000.,  9539712.,  10680264., 10718624.,
      10756984., 10795344., 10713248., 10751776., 10790304., 10828832.,
      10746232., 10784928., 10823624., 10862320., 10779216., 10818080.,
      10856944., 10895808., 9332295.,  9366154.,  9400013.,  9433872.,
      9360862.,  9394868.,  9428874.,  9462880.,  9389429.,  9423582.,
      9457735.,  9491888.,  9417996.,  9452296.,  9486596.,  9520896.,
      7987350.,  8016624.,  8045898.,  8075172.,  8011584.,  8040984.,
      8070384.,  8099784.,  8035818.,  8065344.,  8094870.,  8124396.,
      8060052.,  8089704.,  8119356.,  8149008.,  6645765.,  6670370.,
      6694975.,  6719580.,  6665750.,  6690460.,  6715170.,  6739880.,
      6685735.,  6710550.,  6735365.,  6760180.,  6705720.,  6730640.,
      6755560.,  6780480.,  5579250.,  5600700.,  5622150.,  5643600.,
      5596020.,  5617560.,  5639100.,  5660640.,  5612790.,  5634420.,
      5656050.,  5677680.,  5629560.,  5651280.,  5673000.,  5694720.,
      6685020.,  6710976.,  6736932.,  6762888.,  6704928.,  6730992.,
      6757056.,  6783120.,  6724836.,  6751008.,  6777180.,  6803352.,
      6744744.,  6771024.,  6797304.,  6823584.,  7786758.,  7817292.,
      7847826.,  7878360.,  7809732.,  7840392.,  7871052.,  7901712.,
      7832706.,  7863492.,  7894278.,  7925064.,  7855680.,  7886592.,
      7917504.,  7948416.,  8884176.,  8919360.,  8954544.,  8989728.,
      8910144.,  8945472.,  8980800.,  9016128.,  8936112.,  8971584.,
      9007056.,  9042528.,  8962080.,  8997696.,  9033312.,  9068928.,
      7754502.,  7785540.,  7816578.,  7847616.,  7776972.,  7808136.,
      7839300.,  7870464.,  7799442.,  7830732.,  7862022.,  7893312.,
      7821912.,  7853328.,  7884744.,  7916160.,  6629724.,  6656544.,
      6683364.,  6710184.,  6648768.,  6675696.,  6702624.,  6729552.,
      6667812.,  6694848.,  6721884.,  6748920.,  6686856.,  6714000.,
      6741144.,  6768288.,  5510130.,  5532660.,  5555190.,  5577720.,
      5525820.,  5548440.,  5571060.,  5593680.,  5541510.,  5564220.,
      5586930.,  5609640.,  5557200.,  5580000.,  5602800.,  5625600.,
      4497375.,  4516450.,  4535525.,  4554600.,  4510150.,  4529300.,
      4548450.,  4567600.,  4522925.,  4542150.,  4561375.,  4580600.,
      4535700.,  4555000.,  4574300.,  4593600.,  5382690.,  5405760.,
      5428830.,  5451900.,  5397840.,  5421000.,  5444160.,  5467320.,
      5412990.,  5436240.,  5459490.,  5482740.,  5428140.,  5451480.,
      5474820.,  5498160.,  6262725.,  6289850.,  6316975.,  6344100.,
      6280190.,  6307420.,  6334650.,  6361880.,  6297655.,  6324990.,
      6352325.,  6379660.,  6315120.,  6342560.,  6370000.,  6397440.,
      7137240.,  7168480.,  7199720.,  7230960.,  7156960.,  7188320.,
      7219680.,  7251040.,  7176680.,  7208160.,  7239640.,  7271120.,
      7196400.,  7228000.,  7259600.,  7291200.,  6222405.,  6249950.,
      6277495.,  6305040.,  6239450.,  6267100.,  6294750.,  6322400.,
      6256495.,  6284250.,  6312005.,  6339760.,  6273540.,  6301400.,
      6329260.,  6357120.,  5313570.,  5337360.,  5361150.,  5384940.,
      5328000.,  5351880.,  5375760.,  5399640.,  5342430.,  5366400.,
      5390370.,  5414340.,  5356860.,  5380920.,  5404980.,  5429040.,
      4410975.,  4430950.,  4450925.,  4470900.,  4422850.,  4442900.,
      4462950.,  4483000.,  4434725.,  4454850.,  4474975.,  4495100.,
      4446600.,  4466800.,  4487000.,  4507200.};
  const std::array<int, 4> in_shape = {{3, 8, 8, 4}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 512.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, VALID3x8x8x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      109484., 112784., 116084., 119384., 109760., 113072., 116384., 119696.,
      110036., 113360., 116684., 120008., 110312., 113648., 116984., 120320.,
      110588., 113936., 117284., 120632., 110864., 114224., 117584., 120944.,
      111140., 114512., 117884., 121256., 111416., 114800., 118184., 121568.,
      111692., 115088., 118484., 121880., 111968., 115376., 118784., 122192.,
      112244., 115664., 119084., 122504., 112520., 115952., 119384., 122816.,
      112796., 116240., 119684., 123128., 113072., 116528., 119984., 123440.,
      113348., 116816., 120284., 123752., 113624., 117104., 120584., 124064.,
      113900., 117392., 120884., 124376., 114176., 117680., 121184., 124688.,
      114452., 117968., 121484., 125000., 114728., 118256., 121784., 125312.,
      115004., 118544., 122084., 125624., 115280., 118832., 122384., 125936.,
      115556., 119120., 122684., 126248., 115832., 119408., 122984., 126560.,
      116108., 119696., 123284., 126872., 116384., 119984., 123584., 127184.,
      116660., 120272., 123884., 127496., 116936., 120560., 124184., 127808.,
      118316., 122000., 125684., 129368., 118592., 122288., 125984., 129680.,
      118868., 122576., 126284., 129992., 119144., 122864., 126584., 130304.,
      119420., 123152., 126884., 130616., 119696., 123440., 127184., 130928.,
      119972., 123728., 127484., 131240., 120248., 124016., 127784., 131552.,
      120524., 124304., 128084., 131864., 120800., 124592., 128384., 132176.,
      121076., 124880., 128684., 132488., 121352., 125168., 128984., 132800.,
      121628., 125456., 129284., 133112., 121904., 125744., 129584., 133424.,
      122180., 126032., 129884., 133736., 122456., 126320., 130184., 134048.,
      122732., 126608., 130484., 134360., 123008., 126896., 130784., 134672.,
      123284., 127184., 131084., 134984., 123560., 127472., 131384., 135296.,
      123836., 127760., 131684., 135608., 124112., 128048., 131984., 135920.,
      124388., 128336., 132284., 136232., 124664., 128624., 132584., 136544.,
      124940., 128912., 132884., 136856., 125216., 129200., 133184., 137168.,
      125492., 129488., 133484., 137480., 125768., 129776., 133784., 137792.,
      127148., 131216., 135284., 139352., 127424., 131504., 135584., 139664.,
      127700., 131792., 135884., 139976., 127976., 132080., 136184., 140288.,
      128252., 132368., 136484., 140600., 128528., 132656., 136784., 140912.,
      128804., 132944., 137084., 141224., 129080., 133232., 137384., 141536.,
      129356., 133520., 137684., 141848., 129632., 133808., 137984., 142160.,
      129908., 134096., 138284., 142472., 130184., 134384., 138584., 142784.,
      130460., 134672., 138884., 143096., 130736., 134960., 139184., 143408.,
      131012., 135248., 139484., 143720., 131288., 135536., 139784., 144032.,
      131564., 135824., 140084., 144344., 131840., 136112., 140384., 144656.,
      132116., 136400., 140684., 144968., 132392., 136688., 140984., 145280.,
      132668., 136976., 141284., 145592., 132944., 137264., 141584., 145904.,
      133220., 137552., 141884., 146216., 133496., 137840., 142184., 146528.,
      133772., 138128., 142484., 146840., 134048., 138416., 142784., 147152.,
      134324., 138704., 143084., 147464., 134600., 138992., 143384., 147776.,
      135980., 140432., 144884., 149336., 136256., 140720., 145184., 149648.,
      136532., 141008., 145484., 149960., 136808., 141296., 145784., 150272.,
      137084., 141584., 146084., 150584., 137360., 141872., 146384., 150896.,
      137636., 142160., 146684., 151208., 137912., 142448., 146984., 151520.,
      138188., 142736., 147284., 151832., 138464., 143024., 147584., 152144.,
      138740., 143312., 147884., 152456., 139016., 143600., 148184., 152768.,
      139292., 143888., 148484., 153080., 139568., 144176., 148784., 153392.,
      139844., 144464., 149084., 153704., 140120., 144752., 149384., 154016.,
      140396., 145040., 149684., 154328., 140672., 145328., 149984., 154640.,
      140948., 145616., 150284., 154952., 141224., 145904., 150584., 155264.,
      141500., 146192., 150884., 155576., 141776., 146480., 151184., 155888.,
      142052., 146768., 151484., 156200., 142328., 147056., 151784., 156512.,
      142604., 147344., 152084., 156824., 142880., 147632., 152384., 157136.,
      143156., 147920., 152684., 157448., 143432., 148208., 152984., 157760.,
      144812., 149648., 154484., 159320., 145088., 149936., 154784., 159632.,
      145364., 150224., 155084., 159944., 145640., 150512., 155384., 160256.,
      145916., 150800., 155684., 160568., 146192., 151088., 155984., 160880.,
      146468., 151376., 156284., 161192., 146744., 151664., 156584., 161504.,
      147020., 151952., 156884., 161816., 147296., 152240., 157184., 162128.,
      147572., 152528., 157484., 162440., 147848., 152816., 157784., 162752.,
      148124., 153104., 158084., 163064., 148400., 153392., 158384., 163376.,
      148676., 153680., 158684., 163688., 148952., 153968., 158984., 164000.,
      149228., 154256., 159284., 164312., 149504., 154544., 159584., 164624.,
      149780., 154832., 159884., 164936., 150056., 155120., 160184., 165248.,
      150332., 155408., 160484., 165560., 150608., 155696., 160784., 165872.,
      150884., 155984., 161084., 166184., 151160., 156272., 161384., 166496.,
      151436., 156560., 161684., 166808., 151712., 156848., 161984., 167120.,
      151988., 157136., 162284., 167432., 152264., 157424., 162584., 167744.,
      153644., 158864., 164084., 169304., 153920., 159152., 164384., 169616.,
      154196., 159440., 164684., 169928., 154472., 159728., 164984., 170240.,
      154748., 160016., 165284., 170552., 155024., 160304., 165584., 170864.,
      155300., 160592., 165884., 171176., 155576., 160880., 166184., 171488.,
      155852., 161168., 166484., 171800., 156128., 161456., 166784., 172112.,
      156404., 161744., 167084., 172424., 156680., 162032., 167384., 172736.,
      156956., 162320., 167684., 173048., 157232., 162608., 167984., 173360.,
      157508., 162896., 168284., 173672., 157784., 163184., 168584., 173984.,
      158060., 163472., 168884., 174296., 158336., 163760., 169184., 174608.,
      158612., 164048., 169484., 174920., 158888., 164336., 169784., 175232.,
      159164., 164624., 170084., 175544., 159440., 164912., 170384., 175856.,
      159716., 165200., 170684., 176168., 159992., 165488., 170984., 176480.,
      160268., 165776., 171284., 176792., 160544., 166064., 171584., 177104.,
      160820., 166352., 171884., 177416., 161096., 166640., 172184., 177728.,
      162476., 168080., 173684., 179288., 162752., 168368., 173984., 179600.,
      163028., 168656., 174284., 179912., 163304., 168944., 174584., 180224.,
      163580., 169232., 174884., 180536., 163856., 169520., 175184., 180848.,
      164132., 169808., 175484., 181160., 164408., 170096., 175784., 181472.,
      164684., 170384., 176084., 181784., 164960., 170672., 176384., 182096.,
      165236., 170960., 176684., 182408., 165512., 171248., 176984., 182720.,
      165788., 171536., 177284., 183032., 166064., 171824., 177584., 183344.,
      166340., 172112., 177884., 183656., 166616., 172400., 178184., 183968.,
      166892., 172688., 178484., 184280., 167168., 172976., 178784., 184592.,
      167444., 173264., 179084., 184904., 167720., 173552., 179384., 185216.,
      167996., 173840., 179684., 185528., 168272., 174128., 179984., 185840.,
      168548., 174416., 180284., 186152., 168824., 174704., 180584., 186464.,
      169100., 174992., 180884., 186776., 169376., 175280., 181184., 187088.,
      169652., 175568., 181484., 187400., 169928., 175856., 181784., 187712.};
  const std::array<int, 4> in_shape = {{3, 8, 8, 4}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, SAME3x8x9x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1365135., 1594320., 1823940., 2053980., 1827180., 1599990., 1372425.,
      1658574., 1936431., 2214648., 2493207., 2217240., 1940967., 1664406.,
      1955415., 2282322., 2609460., 2936808., 2610972., 2284968., 1958817.,
      2254200., 2630292., 3006432., 3382596., 3006432., 2630292., 2254200.,
      1958817., 2284968., 2610972., 2936808., 2609460., 2282322., 1955415.,
      1664406., 1940967., 2217240., 2493207., 2214648., 1936431., 1658574.,
      1372425., 1599990., 1827180., 2053980., 1823940., 1594320., 1365135.};
  const std::array<int, 4> in_shape = {{3, 8, 9, 1}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, VALID3x8x9x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      18741., 18912., 19083., 19254., 19425., 19596., 19767., 20280., 20451.,
      20622., 20793., 20964., 21135., 21306., 21819., 21990., 22161., 22332.,
      22503., 22674., 22845., 23358., 23529., 23700., 23871., 24042., 24213.,
      24384., 24897., 25068., 25239., 25410., 25581., 25752., 25923., 26436.,
      26607., 26778., 26949., 27120., 27291., 27462., 27975., 28146., 28317.,
      28488., 28659., 28830., 29001.};
  const std::array<int, 4> in_shape = {{3, 8, 9, 1}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, SAME3x8x9x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      2721855., 2730270., 3178770., 3188640., 3636540., 3647880., 4095135.,
      4107960., 3642900., 3654360., 3189900., 3199980., 2736165., 2744850.,
      3306564., 3317148., 3860451., 3872862., 4415040., 4429296., 4970295.,
      4986414., 4420080., 4434480., 3869271., 3881934., 3317904., 3328812.,
      3897915., 3910830., 4549503., 4564644., 5201532., 5218920., 5853960.,
      5873616., 5204388., 5221944., 4554501., 4569936., 3904341., 3917634.,
      4492992., 4508400., 5242524., 5260584., 5992128., 6012864., 6741756.,
      6765192., 5991936., 6012864., 5242188., 5260584., 4492560., 4508400.,
      3903585., 3917634., 4553472., 4569936., 5203044., 5221944., 5852259.,
      5873616., 5199852., 5218920., 4547886., 4564644., 3896403., 3910830.,
      3316284., 3328812., 3867255., 3881934., 4417632., 4434480., 4967379.,
      4986414., 4412304., 4429296., 3857931., 3872862., 3304296., 3317148.,
      2734005., 2744850., 3187275., 3199980., 3639780., 3654360., 4091490.,
      4107960., 3633180., 3647880., 3175725., 3188640., 2719155., 2730270.};
  const std::array<int, 4> in_shape = {{3, 8, 9, 1}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, VALID3x8x9x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      36069., 37482., 36393., 37824., 36717., 38166., 37041., 38508., 37365.,
      38850., 37689., 39192., 38013., 39534., 38985., 40560., 39309., 40902.,
      39633., 41244., 39957., 41586., 40281., 41928., 40605., 42270., 40929.,
      42612., 41901., 43638., 42225., 43980., 42549., 44322., 42873., 44664.,
      43197., 45006., 43521., 45348., 43845., 45690., 44817., 46716., 45141.,
      47058., 45465., 47400., 45789., 47742., 46113., 48084., 46437., 48426.,
      46761., 48768., 47733., 49794., 48057., 50136., 48381., 50478., 48705.,
      50820., 49029., 51162., 49353., 51504., 49677., 51846., 50649., 52872.,
      50973., 53214., 51297., 53556., 51621., 53898., 51945., 54240., 52269.,
      54582., 52593., 54924., 53565., 55950., 53889., 56292., 54213., 56634.,
      54537., 56976., 54861., 57318., 55185., 57660., 55509., 58002.};
  const std::array<int, 4> in_shape = {{3, 8, 9, 1}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, SAME3x8x9x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5435295.,  5443710.,  5452125.,  5460540.,  6347670.,  6357540.,
      6367410.,  6377280.,  7261740.,  7273080.,  7284420.,  7295760.,
      8177445.,  8190270.,  8203095.,  8215920.,  7274340.,  7285800.,
      7297260.,  7308720.,  6369720.,  6379800.,  6389880.,  6399960.,
      5463645.,  5472330.,  5481015.,  5489700.,  6602544.,  6613128.,
      6623712.,  6634296.,  7708491.,  7720902.,  7733313.,  7745724.,
      8815824.,  8830080.,  8844336.,  8858592.,  9924471.,  9940590.,
      9956709.,  9972828.,  8825760.,  8840160.,  8854560.,  8868960.,
      7725879.,  7738542.,  7751205.,  7763868.,  6624900.,  6635808.,
      6646716.,  6657624.,  7782915.,  7795830.,  7808745.,  7821660.,
      9083865.,  9099006.,  9114147.,  9129288.,  10385676., 10403064.,
      10420452., 10437840., 11688264., 11707920., 11727576., 11747232.,
      10391220., 10408776., 10426332., 10443888., 9093567.,  9109002.,
      9124437.,  9139872.,  7795389.,  7808682.,  7821975.,  7835268.,
      8970576.,  8985984.,  9001392.,  9016800.,  10466988., 10485048.,
      10503108., 10521168., 11963520., 11984256., 12004992., 12025728.,
      13460076., 13483512., 13506948., 13530384., 11962944., 11983872.,
      12004800., 12025728., 10465980., 10484376., 10502772., 10521168.,
      8969280.,  8985120.,  9000960.,  9016800.,  7793121.,  7807170.,
      7821219.,  7835268.,  9090480.,  9106944.,  9123408.,  9139872.,
      10387188., 10406088., 10424988., 10443888., 11683161., 11704518.,
      11725875., 11747232., 10380636., 10399704., 10418772., 10437840.,
      9079014.,  9095772.,  9112530.,  9129288.,  7778379.,  7792806.,
      7807233.,  7821660.,  6620040.,  6632568.,  6645096.,  6657624.,
      7719831.,  7734510.,  7749189.,  7763868.,  8818416.,  8835264.,
      8852112.,  8868960.,  9915723.,  9934758.,  9953793.,  9972828.,
      8807616.,  8824608.,  8841600.,  8858592.,  7700931.,  7715862.,
      7730793.,  7745724.,  6595740.,  6608592.,  6621444.,  6634296.,
      5457165.,  5468010.,  5478855.,  5489700.,  6361845.,  6374550.,
      6387255.,  6399960.,  7264980.,  7279560.,  7294140.,  7308720.,
      8166510.,  8182980.,  8199450.,  8215920.,  7251660.,  7266360.,
      7281060.,  7295760.,  6338535.,  6351450.,  6364365.,  6377280.,
      5427195.,  5438310.,  5449425.,  5460540.};
  const std::array<int, 4> in_shape = {{3, 8, 9, 1}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, VALID3x8x9x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      70725.,  72138.,  73551.,  74964.,  71355.,  72786.,  74217.,  75648.,
      71985.,  73434.,  74883.,  76332.,  72615.,  74082.,  75549.,  77016.,
      73245.,  74730.,  76215.,  77700.,  73875.,  75378.,  76881.,  78384.,
      74505.,  76026.,  77547.,  79068.,  76395.,  77970.,  79545.,  81120.,
      77025.,  78618.,  80211.,  81804.,  77655.,  79266.,  80877.,  82488.,
      78285.,  79914.,  81543.,  83172.,  78915.,  80562.,  82209.,  83856.,
      79545.,  81210.,  82875.,  84540.,  80175.,  81858.,  83541.,  85224.,
      82065.,  83802.,  85539.,  87276.,  82695.,  84450.,  86205.,  87960.,
      83325.,  85098.,  86871.,  88644.,  83955.,  85746.,  87537.,  89328.,
      84585.,  86394.,  88203.,  90012.,  85215.,  87042.,  88869.,  90696.,
      85845.,  87690.,  89535.,  91380.,  87735.,  89634.,  91533.,  93432.,
      88365.,  90282.,  92199.,  94116.,  88995.,  90930.,  92865.,  94800.,
      89625.,  91578.,  93531.,  95484.,  90255.,  92226.,  94197.,  96168.,
      90885.,  92874.,  94863.,  96852.,  91515.,  93522.,  95529.,  97536.,
      93405.,  95466.,  97527.,  99588.,  94035.,  96114.,  98193.,  100272.,
      94665.,  96762.,  98859.,  100956., 95295.,  97410.,  99525.,  101640.,
      95925.,  98058.,  100191., 102324., 96555.,  98706.,  100857., 103008.,
      97185.,  99354.,  101523., 103692., 99075.,  101298., 103521., 105744.,
      99705.,  101946., 104187., 106428., 100335., 102594., 104853., 107112.,
      100965., 103242., 105519., 107796., 101595., 103890., 106185., 108480.,
      102225., 104538., 106851., 109164., 102855., 105186., 107517., 109848.,
      104745., 107130., 109515., 111900., 105375., 107778., 110181., 112584.,
      106005., 108426., 110847., 113268., 106635., 109074., 111513., 113952.,
      107265., 109722., 112179., 114636., 107895., 110370., 112845., 115320.,
      108525., 111018., 113511., 116004.};
  const std::array<int, 4> in_shape = {{3, 8, 9, 1}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, SAME3x8x9x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      2719155., 2730270., 3175725., 3188640., 3633180., 3647880., 4091490.,
      4107960., 3639780., 3654360., 3187275., 3199980., 2734005., 2744850.,
      3304296., 3317148., 3857931., 3872862., 4412304., 4429296., 4967379.,
      4986414., 4417632., 4434480., 3867255., 3881934., 3316284., 3328812.,
      3896403., 3910830., 4547886., 4564644., 5199852., 5218920., 5852259.,
      5873616., 5203044., 5221944., 4553472., 4569936., 3903585., 3917634.,
      4492560., 4508400., 5242188., 5260584., 5991936., 6012864., 6741756.,
      6765192., 5992128., 6012864., 5242524., 5260584., 4492992., 4508400.,
      3904341., 3917634., 4554501., 4569936., 5204388., 5221944., 5853960.,
      5873616., 5201532., 5218920., 4549503., 4564644., 3897915., 3910830.,
      3317904., 3328812., 3869271., 3881934., 4420080., 4434480., 4970295.,
      4986414., 4415040., 4429296., 3860451., 3872862., 3306564., 3317148.,
      2736165., 2744850., 3189900., 3199980., 3642900., 3654360., 4095135.,
      4107960., 3636540., 3647880., 3178770., 3188640., 2721855., 2730270.};
  const std::array<int, 4> in_shape = {{3, 8, 9, 2}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, VALID3x8x9x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      37311., 37482., 37653., 37824., 37995., 38166., 38337., 38508., 38679.,
      38850., 39021., 39192., 39363., 39534., 40389., 40560., 40731., 40902.,
      41073., 41244., 41415., 41586., 41757., 41928., 42099., 42270., 42441.,
      42612., 43467., 43638., 43809., 43980., 44151., 44322., 44493., 44664.,
      44835., 45006., 45177., 45348., 45519., 45690., 46545., 46716., 46887.,
      47058., 47229., 47400., 47571., 47742., 47913., 48084., 48255., 48426.,
      48597., 48768., 49623., 49794., 49965., 50136., 50307., 50478., 50649.,
      50820., 50991., 51162., 51333., 51504., 51675., 51846., 52701., 52872.,
      53043., 53214., 53385., 53556., 53727., 53898., 54069., 54240., 54411.,
      54582., 54753., 54924., 55779., 55950., 56121., 56292., 56463., 56634.,
      56805., 56976., 57147., 57318., 57489., 57660., 57831., 58002.};
  const std::array<int, 4> in_shape = {{3, 8, 9, 2}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, SAME3x8x9x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5421570.,  5438310.,  5443710.,  5460540.,  6331815.,  6351450.,
      6357540.,  6377280.,  7243800.,  7266360.,  7273080.,  7295760.,
      8157465.,  8182980.,  8190270.,  8215920.,  7256760.,  7279560.,
      7285800.,  7308720.,  6354495.,  6374550.,  6379800.,  6399960.,
      5450730.,  5468010.,  5472330.,  5489700.,  6587532.,  6608592.,
      6613128.,  6634296.,  7691166.,  7715862.,  7720902.,  7745724.,
      8796240.,  8824608.,  8830080.,  8858592.,  9902682.,  9934758.,
      9940590.,  9972828.,  8806608.,  8835264.,  8840160.,  8868960.,
      7709310.,  7734510.,  7738542.,  7763868.,  6610860.,  6632568.,
      6635808.,  6657624.,  7767102.,  7792806.,  7795830.,  7821660.,
      9065637.,  9095772.,  9099006.,  9129288.,  10365096., 10399704.,
      10403064., 10437840., 11665395., 11704518., 11707920., 11747232.,
      10371144., 10406088., 10408776., 10443888., 9076221.,  9106944.,
      9109002.,  9139872.,  7780710.,  7807170.,  7808682.,  7835268.,
      8954448.,  8985120.,  8985984.,  9016800.,  10448424., 10484376.,
      10485048., 10521168., 11942592., 11983872., 11984256., 12025728.,
      13436856., 13483512., 13483512., 13530384., 11942592., 11984256.,
      11983872., 12025728., 10448424., 10485048., 10484376., 10521168.,
      8954448.,  8985984.,  8985120.,  9016800.,  7780710.,  7808682.,
      7807170.,  7835268.,  9076221.,  9109002.,  9106944.,  9139872.,
      10371144., 10408776., 10406088., 10443888., 11665395., 11707920.,
      11704518., 11747232., 10365096., 10403064., 10399704., 10437840.,
      9065637.,  9099006.,  9095772.,  9129288.,  7767102.,  7795830.,
      7792806.,  7821660.,  6610860.,  6635808.,  6632568.,  6657624.,
      7709310.,  7738542.,  7734510.,  7763868.,  8806608.,  8840160.,
      8835264.,  8868960.,  9902682.,  9940590.,  9934758.,  9972828.,
      8796240.,  8830080.,  8824608.,  8858592.,  7691166.,  7720902.,
      7715862.,  7745724.,  6587532.,  6613128.,  6608592.,  6634296.,
      5450730.,  5472330.,  5468010.,  5489700.,  6354495.,  6379800.,
      6374550.,  6399960.,  7256760.,  7285800.,  7279560.,  7308720.,
      8157465.,  8190270.,  8182980.,  8215920.,  7243800.,  7273080.,
      7266360.,  7295760.,  6331815.,  6357540.,  6351450.,  6377280.,
      5421570.,  5443710.,  5438310.,  5460540.};
  const std::array<int, 4> in_shape = {{3, 8, 9, 2}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, VALID3x8x9x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      71814.,  74622.,  72138.,  74964.,  72462.,  75306.,  72786.,  75648.,
      73110.,  75990.,  73434.,  76332.,  73758.,  76674.,  74082.,  77016.,
      74406.,  77358.,  74730.,  77700.,  75054.,  78042.,  75378.,  78384.,
      75702.,  78726.,  76026.,  79068.,  77646.,  80778.,  77970.,  81120.,
      78294.,  81462.,  78618.,  81804.,  78942.,  82146.,  79266.,  82488.,
      79590.,  82830.,  79914.,  83172.,  80238.,  83514.,  80562.,  83856.,
      80886.,  84198.,  81210.,  84540.,  81534.,  84882.,  81858.,  85224.,
      83478.,  86934.,  83802.,  87276.,  84126.,  87618.,  84450.,  87960.,
      84774.,  88302.,  85098.,  88644.,  85422.,  88986.,  85746.,  89328.,
      86070.,  89670.,  86394.,  90012.,  86718.,  90354.,  87042.,  90696.,
      87366.,  91038.,  87690.,  91380.,  89310.,  93090.,  89634.,  93432.,
      89958.,  93774.,  90282.,  94116.,  90606.,  94458.,  90930.,  94800.,
      91254.,  95142.,  91578.,  95484.,  91902.,  95826.,  92226.,  96168.,
      92550.,  96510.,  92874.,  96852.,  93198.,  97194.,  93522.,  97536.,
      95142.,  99246.,  95466.,  99588.,  95790.,  99930.,  96114.,  100272.,
      96438.,  100614., 96762.,  100956., 97086.,  101298., 97410.,  101640.,
      97734.,  101982., 98058.,  102324., 98382.,  102666., 98706.,  103008.,
      99030.,  103350., 99354.,  103692., 100974., 105402., 101298., 105744.,
      101622., 106086., 101946., 106428., 102270., 106770., 102594., 107112.,
      102918., 107454., 103242., 107796., 103566., 108138., 103890., 108480.,
      104214., 108822., 104538., 109164., 104862., 109506., 105186., 109848.,
      106806., 111558., 107130., 111900., 107454., 112242., 107778., 112584.,
      108102., 112926., 108426., 113268., 108750., 113610., 109074., 113952.,
      109398., 114294., 109722., 114636., 110046., 114978., 110370., 115320.,
      110694., 115662., 111018., 116004.};
  const std::array<int, 4> in_shape = {{3, 8, 9, 2}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, SAME3x8x9x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      4448928.,  4465668.,  4482408.,  4499148.,  4471614.,  4488444.,
      4505274.,  4522104.,  5178523.,  5198158.,  5217793.,  5237428.,
      5204780.,  5224520.,  5244260.,  5264000.,  6006288.,  6028848.,
      6051408.,  6073968.,  6036568.,  6059248.,  6081928.,  6104608.,
      6831239.,  6856754.,  6882269.,  6907784.,  6865482.,  6891132.,
      6916782.,  6942432.,  6079584.,  6102384.,  6125184.,  6147984.,
      6109896.,  6132816.,  6155736.,  6178656.,  5332007.,  5352062.,
      5372117.,  5392172.,  5358448.,  5378608.,  5398768.,  5418928.,
      4588628.,  4605908.,  4623188.,  4640468.,  4611258.,  4628628.,
      4645998.,  4663368.,  5486292.,  5507352.,  5528412.,  5549472.,
      5512800.,  5533968.,  5555136.,  5576304.,  6383300.,  6407996.,
      6432692.,  6457388.,  6413974.,  6438796.,  6463618.,  6488440.,
      7386064.,  7414432.,  7442800.,  7471168.,  7421344.,  7449856.,
      7478368.,  7506880.,  8384360.,  8416436.,  8448512.,  8480588.,
      8424174.,  8456412.,  8488650.,  8520888.,  7455152.,  7483808.,
      7512464.,  7541120.,  7490368.,  7519168.,  7547968.,  7576768.,
      6531724.,  6556924.,  6582124.,  6607324.,  6562414.,  6587740.,
      6613066.,  6638392.,  5614220.,  5635928.,  5657636.,  5679344.,
      5640456.,  5662272.,  5684088.,  5705904.,  6495252.,  6520956.,
      6546660.,  6572364.,  6524934.,  6550764.,  6576594.,  6602424.,
      7553427.,  7583562.,  7613697.,  7643832.,  7587762.,  7618044.,
      7648326.,  7678608.,  8724512.,  8759120.,  8793728.,  8828336.,
      8763928.,  8798704.,  8833480.,  8868256.,  9889043.,  9928166.,
      9967289.,  10006412., 9933456.,  9972768.,  10012080., 10051392.,
      8785936.,  8820880.,  8855824.,  8890768.,  8825192.,  8860304.,
      8895416.,  8930528.,  7690743.,  7721466.,  7752189.,  7782912.,
      7724926.,  7755796.,  7786666.,  7817536.,  6603632.,  6630092.,
      6656552.,  6683012.,  6632826.,  6659412.,  6685998.,  6712584.,
      7464144.,  7494816.,  7525488.,  7556160.,  7496352.,  7527168.,
      7557984.,  7588800.,  8675296.,  8711248.,  8747200.,  8783152.,
      8712536.,  8748656.,  8784776.,  8820896.,  10006080., 10047360.,
      10088640., 10129920., 10048768., 10090240., 10131712., 10173184.,
      11327792., 11374448., 11421104., 11467760., 11375832., 11422704.,
      11469576., 11516448., 10056384., 10098048., 10139712., 10181376.,
      10098816., 10140672., 10182528., 10224384., 8795456.,  8832080.,
      8868704.,  8905328.,  8832376.,  8869168.,  8905960.,  8942752.,
      7545200.,  7576736.,  7608272.,  7639808.,  7576704.,  7608384.,
      7640064.,  7671744.,  6815112.,  6843084.,  6871056.,  6899028.,
      6843330.,  6871428.,  6899526.,  6927624.,  7919597.,  7952378.,
      7985159.,  8017940.,  7952224.,  7985152.,  8018080.,  8051008.,
      9153424.,  9191056.,  9228688.,  9266320.,  9190888.,  9228688.,
      9266488.,  9304288.,  10378697., 10421222., 10463747., 10506272.,
      10420914., 10463628., 10506342., 10549056., 9217280.,  9255248.,
      9293216.,  9331184.,  9254584.,  9292720.,  9330856.,  9368992.,
      8065777.,  8099146.,  8132515.,  8165884.,  8098252.,  8131768.,
      8165284.,  8198800.,  6924356.,  6953084.,  6981812.,  7010540.,
      6952086.,  6980940.,  7009794.,  7038648.,  6284772.,  6309720.,
      6334668.,  6359616.,  6309648.,  6334704.,  6359760.,  6384816.,
      7303884.,  7333116.,  7362348.,  7391580.,  7332654.,  7362012.,
      7391370.,  7420728.,  8314512.,  8348064.,  8381616.,  8415168.,
      8347104.,  8380800.,  8414496.,  8448192.,  9316512.,  9354420.,
      9392328.,  9430236.,  9352854.,  9390924.,  9428994.,  9467064.,
      8244336.,  8278176.,  8312016.,  8345856.,  8276352.,  8310336.,
      8344320.,  8378304.,  7181076.,  7210812.,  7240548.,  7270284.,
      7208838.,  7238700.,  7268562.,  7298424.,  6126876.,  6152472.,
      6178068.,  6203664.,  6150456.,  6176160.,  6201864.,  6227568.,
      4981620.,  5003220.,  5024820.,  5046420.,  5000730.,  5022420.,
      5044110.,  5065800.,  5784485.,  5809790.,  5835095.,  5860400.,
      5806570.,  5831980.,  5857390.,  5882800.,  6579200.,  6608240.,
      6637280.,  6666320.,  6604200.,  6633360.,  6662520.,  6691680.,
      7365645.,  7398450.,  7431255.,  7464060.,  7393500.,  7426440.,
      7459380.,  7492320.,  6512080.,  6541360.,  6570640.,  6599920.,
      6536600.,  6566000.,  6595400.,  6624800.,  5667025.,  5692750.,
      5718475.,  5744200.,  5688270.,  5714100.,  5739930.,  5765760.,
      4830600.,  4852740.,  4874880.,  4897020.,  4848630.,  4870860.,
      4893090.,  4915320.};
  const std::array<int, 4> in_shape = {{3, 8, 9, 2}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 512.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, VALID3x8x9x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      140820., 143628., 146436., 149244., 141450., 144276., 147102., 149928.,
      142080., 144924., 147768., 150612., 142710., 145572., 148434., 151296.,
      143340., 146220., 149100., 151980., 143970., 146868., 149766., 152664.,
      144600., 147516., 150432., 153348., 145230., 148164., 151098., 154032.,
      145860., 148812., 151764., 154716., 146490., 149460., 152430., 155400.,
      147120., 150108., 153096., 156084., 147750., 150756., 153762., 156768.,
      148380., 151404., 154428., 157452., 149010., 152052., 155094., 158136.,
      152160., 155292., 158424., 161556., 152790., 155940., 159090., 162240.,
      153420., 156588., 159756., 162924., 154050., 157236., 160422., 163608.,
      154680., 157884., 161088., 164292., 155310., 158532., 161754., 164976.,
      155940., 159180., 162420., 165660., 156570., 159828., 163086., 166344.,
      157200., 160476., 163752., 167028., 157830., 161124., 164418., 167712.,
      158460., 161772., 165084., 168396., 159090., 162420., 165750., 169080.,
      159720., 163068., 166416., 169764., 160350., 163716., 167082., 170448.,
      163500., 166956., 170412., 173868., 164130., 167604., 171078., 174552.,
      164760., 168252., 171744., 175236., 165390., 168900., 172410., 175920.,
      166020., 169548., 173076., 176604., 166650., 170196., 173742., 177288.,
      167280., 170844., 174408., 177972., 167910., 171492., 175074., 178656.,
      168540., 172140., 175740., 179340., 169170., 172788., 176406., 180024.,
      169800., 173436., 177072., 180708., 170430., 174084., 177738., 181392.,
      171060., 174732., 178404., 182076., 171690., 175380., 179070., 182760.,
      174840., 178620., 182400., 186180., 175470., 179268., 183066., 186864.,
      176100., 179916., 183732., 187548., 176730., 180564., 184398., 188232.,
      177360., 181212., 185064., 188916., 177990., 181860., 185730., 189600.,
      178620., 182508., 186396., 190284., 179250., 183156., 187062., 190968.,
      179880., 183804., 187728., 191652., 180510., 184452., 188394., 192336.,
      181140., 185100., 189060., 193020., 181770., 185748., 189726., 193704.,
      182400., 186396., 190392., 194388., 183030., 187044., 191058., 195072.,
      186180., 190284., 194388., 198492., 186810., 190932., 195054., 199176.,
      187440., 191580., 195720., 199860., 188070., 192228., 196386., 200544.,
      188700., 192876., 197052., 201228., 189330., 193524., 197718., 201912.,
      189960., 194172., 198384., 202596., 190590., 194820., 199050., 203280.,
      191220., 195468., 199716., 203964., 191850., 196116., 200382., 204648.,
      192480., 196764., 201048., 205332., 193110., 197412., 201714., 206016.,
      193740., 198060., 202380., 206700., 194370., 198708., 203046., 207384.,
      197520., 201948., 206376., 210804., 198150., 202596., 207042., 211488.,
      198780., 203244., 207708., 212172., 199410., 203892., 208374., 212856.,
      200040., 204540., 209040., 213540., 200670., 205188., 209706., 214224.,
      201300., 205836., 210372., 214908., 201930., 206484., 211038., 215592.,
      202560., 207132., 211704., 216276., 203190., 207780., 212370., 216960.,
      203820., 208428., 213036., 217644., 204450., 209076., 213702., 218328.,
      205080., 209724., 214368., 219012., 205710., 210372., 215034., 219696.,
      208860., 213612., 218364., 223116., 209490., 214260., 219030., 223800.,
      210120., 214908., 219696., 224484., 210750., 215556., 220362., 225168.,
      211380., 216204., 221028., 225852., 212010., 216852., 221694., 226536.,
      212640., 217500., 222360., 227220., 213270., 218148., 223026., 227904.,
      213900., 218796., 223692., 228588., 214530., 219444., 224358., 229272.,
      215160., 220092., 225024., 229956., 215790., 220740., 225690., 230640.,
      216420., 221388., 226356., 231324., 217050., 222036., 227022., 232008.};
  const std::array<int, 4> in_shape = {{3, 8, 9, 2}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, SAME3x8x9x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5427195.,  5438310.,  5449425.,  5460540.,  6338535.,  6351450.,
      6364365.,  6377280.,  7251660.,  7266360.,  7281060.,  7295760.,
      8166510.,  8182980.,  8199450.,  8215920.,  7264980.,  7279560.,
      7294140.,  7308720.,  6361845.,  6374550.,  6387255.,  6399960.,
      5457165.,  5468010.,  5478855.,  5489700.,  6595740.,  6608592.,
      6621444.,  6634296.,  7700931.,  7715862.,  7730793.,  7745724.,
      8807616.,  8824608.,  8841600.,  8858592.,  9915723.,  9934758.,
      9953793.,  9972828.,  8818416.,  8835264.,  8852112.,  8868960.,
      7719831.,  7734510.,  7749189.,  7763868.,  6620040.,  6632568.,
      6645096.,  6657624.,  7778379.,  7792806.,  7807233.,  7821660.,
      9079014.,  9095772.,  9112530.,  9129288.,  10380636., 10399704.,
      10418772., 10437840., 11683161., 11704518., 11725875., 11747232.,
      10387188., 10406088., 10424988., 10443888., 9090480.,  9106944.,
      9123408.,  9139872.,  7793121.,  7807170.,  7821219.,  7835268.,
      8969280.,  8985120.,  9000960.,  9016800.,  10465980., 10484376.,
      10502772., 10521168., 11962944., 11983872., 12004800., 12025728.,
      13460076., 13483512., 13506948., 13530384., 11963520., 11984256.,
      12004992., 12025728., 10466988., 10485048., 10503108., 10521168.,
      8970576.,  8985984.,  9001392.,  9016800.,  7795389.,  7808682.,
      7821975.,  7835268.,  9093567.,  9109002.,  9124437.,  9139872.,
      10391220., 10408776., 10426332., 10443888., 11688264., 11707920.,
      11727576., 11747232., 10385676., 10403064., 10420452., 10437840.,
      9083865.,  9099006.,  9114147.,  9129288.,  7782915.,  7795830.,
      7808745.,  7821660.,  6624900.,  6635808.,  6646716.,  6657624.,
      7725879.,  7738542.,  7751205.,  7763868.,  8825760.,  8840160.,
      8854560.,  8868960.,  9924471.,  9940590.,  9956709.,  9972828.,
      8815824.,  8830080.,  8844336.,  8858592.,  7708491.,  7720902.,
      7733313.,  7745724.,  6602544.,  6613128.,  6623712.,  6634296.,
      5463645.,  5472330.,  5481015.,  5489700.,  6369720.,  6379800.,
      6389880.,  6399960.,  7274340.,  7285800.,  7297260.,  7308720.,
      8177445.,  8190270.,  8203095.,  8215920.,  7261740.,  7273080.,
      7284420.,  7295760.,  6347670.,  6357540.,  6367410.,  6377280.,
      5435295.,  5443710.,  5452125.,  5460540.};
  const std::array<int, 4> in_shape = {{3, 8, 9, 4}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, VALID3x8x9x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      74451.,  74622.,  74793.,  74964.,  75135.,  75306.,  75477.,  75648.,
      75819.,  75990.,  76161.,  76332.,  76503.,  76674.,  76845.,  77016.,
      77187.,  77358.,  77529.,  77700.,  77871.,  78042.,  78213.,  78384.,
      78555.,  78726.,  78897.,  79068.,  80607.,  80778.,  80949.,  81120.,
      81291.,  81462.,  81633.,  81804.,  81975.,  82146.,  82317.,  82488.,
      82659.,  82830.,  83001.,  83172.,  83343.,  83514.,  83685.,  83856.,
      84027.,  84198.,  84369.,  84540.,  84711.,  84882.,  85053.,  85224.,
      86763.,  86934.,  87105.,  87276.,  87447.,  87618.,  87789.,  87960.,
      88131.,  88302.,  88473.,  88644.,  88815.,  88986.,  89157.,  89328.,
      89499.,  89670.,  89841.,  90012.,  90183.,  90354.,  90525.,  90696.,
      90867.,  91038.,  91209.,  91380.,  92919.,  93090.,  93261.,  93432.,
      93603.,  93774.,  93945.,  94116.,  94287.,  94458.,  94629.,  94800.,
      94971.,  95142.,  95313.,  95484.,  95655.,  95826.,  95997.,  96168.,
      96339.,  96510.,  96681.,  96852.,  97023.,  97194.,  97365.,  97536.,
      99075.,  99246.,  99417.,  99588.,  99759.,  99930.,  100101., 100272.,
      100443., 100614., 100785., 100956., 101127., 101298., 101469., 101640.,
      101811., 101982., 102153., 102324., 102495., 102666., 102837., 103008.,
      103179., 103350., 103521., 103692., 105231., 105402., 105573., 105744.,
      105915., 106086., 106257., 106428., 106599., 106770., 106941., 107112.,
      107283., 107454., 107625., 107796., 107967., 108138., 108309., 108480.,
      108651., 108822., 108993., 109164., 109335., 109506., 109677., 109848.,
      111387., 111558., 111729., 111900., 112071., 112242., 112413., 112584.,
      112755., 112926., 113097., 113268., 113439., 113610., 113781., 113952.,
      114123., 114294., 114465., 114636., 114807., 114978., 115149., 115320.,
      115491., 115662., 115833., 116004.};
  const std::array<int, 4> in_shape = {{3, 8, 9, 4}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, SAME3x8x9x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      4830600.,  4848630.,  4852740.,  4870860.,  4874880.,  4893090.,
      4897020.,  4915320.,  5667025.,  5688270.,  5692750.,  5714100.,
      5718475.,  5739930.,  5744200.,  5765760.,  6512080.,  6536600.,
      6541360.,  6566000.,  6570640.,  6595400.,  6599920.,  6624800.,
      7365645.,  7393500.,  7398450.,  7426440.,  7431255.,  7459380.,
      7464060.,  7492320.,  6579200.,  6604200.,  6608240.,  6633360.,
      6637280.,  6662520.,  6666320.,  6691680.,  5784485.,  5806570.,
      5809790.,  5831980.,  5835095.,  5857390.,  5860400.,  5882800.,
      4981620.,  5000730.,  5003220.,  5022420.,  5024820.,  5044110.,
      5046420.,  5065800.,  6126876.,  6150456.,  6152472.,  6176160.,
      6178068.,  6201864.,  6203664.,  6227568.,  7181076.,  7208838.,
      7210812.,  7238700.,  7240548.,  7268562.,  7270284.,  7298424.,
      8244336.,  8276352.,  8278176.,  8310336.,  8312016.,  8344320.,
      8345856.,  8378304.,  9316512.,  9352854.,  9354420.,  9390924.,
      9392328.,  9428994.,  9430236.,  9467064.,  8314512.,  8347104.,
      8348064.,  8380800.,  8381616.,  8414496.,  8415168.,  8448192.,
      7303884.,  7332654.,  7333116.,  7362012.,  7362348.,  7391370.,
      7391580.,  7420728.,  6284772.,  6309648.,  6309720.,  6334704.,
      6334668.,  6359760.,  6359616.,  6384816.,  6924356.,  6952086.,
      6953084.,  6980940.,  6981812.,  7009794.,  7010540.,  7038648.,
      8065777.,  8098252.,  8099146.,  8131768.,  8132515.,  8165284.,
      8165884.,  8198800.,  9217280.,  9254584.,  9255248.,  9292720.,
      9293216.,  9330856.,  9331184.,  9368992.,  10378697., 10420914.,
      10421222., 10463628., 10463747., 10506342., 10506272., 10549056.,
      9153424.,  9190888.,  9191056.,  9228688.,  9228688.,  9266488.,
      9266320.,  9304288.,  7919597.,  7952224.,  7952378.,  7985152.,
      7985159.,  8018080.,  8017940.,  8051008.,  6815112.,  6843330.,
      6843084.,  6871428.,  6871056.,  6899526.,  6899028.,  6927624.,
      7545200.,  7576704.,  7576736.,  7608384.,  7608272.,  7640064.,
      7639808.,  7671744.,  8795456.,  8832376.,  8832080.,  8869168.,
      8868704.,  8905960.,  8905328.,  8942752.,  10056384., 10098816.,
      10098048., 10140672., 10139712., 10182528., 10181376., 10224384.,
      11327792., 11375832., 11374448., 11422704., 11421104., 11469576.,
      11467760., 11516448., 10006080., 10048768., 10047360., 10090240.,
      10088640., 10131712., 10129920., 10173184., 8675296.,  8712536.,
      8711248.,  8748656.,  8747200.,  8784776.,  8783152.,  8820896.,
      7464144.,  7496352.,  7494816.,  7527168.,  7525488.,  7557984.,
      7556160.,  7588800.,  6603632.,  6632826.,  6630092.,  6659412.,
      6656552.,  6685998.,  6683012.,  6712584.,  7690743.,  7724926.,
      7721466.,  7755796.,  7752189.,  7786666.,  7782912.,  7817536.,
      8785936.,  8825192.,  8820880.,  8860304.,  8855824.,  8895416.,
      8890768.,  8930528.,  9889043.,  9933456.,  9928166.,  9972768.,
      9967289.,  10012080., 10006412., 10051392., 8724512.,  8763928.,
      8759120.,  8798704.,  8793728.,  8833480.,  8828336.,  8868256.,
      7553427.,  7587762.,  7583562.,  7618044.,  7613697.,  7648326.,
      7643832.,  7678608.,  6495252.,  6524934.,  6520956.,  6550764.,
      6546660.,  6576594.,  6572364.,  6602424.,  5614220.,  5640456.,
      5635928.,  5662272.,  5657636.,  5684088.,  5679344.,  5705904.,
      6531724.,  6562414.,  6556924.,  6587740.,  6582124.,  6613066.,
      6607324.,  6638392.,  7455152.,  7490368.,  7483808.,  7519168.,
      7512464.,  7547968.,  7541120.,  7576768.,  8384360.,  8424174.,
      8416436.,  8456412.,  8448512.,  8488650.,  8480588.,  8520888.,
      7386064.,  7421344.,  7414432.,  7449856.,  7442800.,  7478368.,
      7471168.,  7506880.,  6383300.,  6413974.,  6407996.,  6438796.,
      6432692.,  6463618.,  6457388.,  6488440.,  5486292.,  5512800.,
      5507352.,  5533968.,  5528412.,  5555136.,  5549472.,  5576304.,
      4588628.,  4611258.,  4605908.,  4628628.,  4623188.,  4645998.,
      4640468.,  4663368.,  5332007.,  5358448.,  5352062.,  5378608.,
      5372117.,  5398768.,  5392172.,  5418928.,  6079584.,  6109896.,
      6102384.,  6132816.,  6125184.,  6155736.,  6147984.,  6178656.,
      6831239.,  6865482.,  6856754.,  6891132.,  6882269.,  6916782.,
      6907784.,  6942432.,  6006288.,  6036568.,  6028848.,  6059248.,
      6051408.,  6081928.,  6073968.,  6104608.,  5178523.,  5204780.,
      5198158.,  5224520.,  5217793.,  5244260.,  5237428.,  5264000.,
      4448928.,  4471614.,  4465668.,  4488444.,  4482408.,  4505274.,
      4499148.,  4522104.};
  const std::array<int, 4> in_shape = {{3, 8, 9, 4}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 512.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, VALID3x8x9x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      143304., 148902., 143628., 149244., 143952., 149586., 144276., 149928.,
      144600., 150270., 144924., 150612., 145248., 150954., 145572., 151296.,
      145896., 151638., 146220., 151980., 146544., 152322., 146868., 152664.,
      147192., 153006., 147516., 153348., 147840., 153690., 148164., 154032.,
      148488., 154374., 148812., 154716., 149136., 155058., 149460., 155400.,
      149784., 155742., 150108., 156084., 150432., 156426., 150756., 156768.,
      151080., 157110., 151404., 157452., 151728., 157794., 152052., 158136.,
      154968., 161214., 155292., 161556., 155616., 161898., 155940., 162240.,
      156264., 162582., 156588., 162924., 156912., 163266., 157236., 163608.,
      157560., 163950., 157884., 164292., 158208., 164634., 158532., 164976.,
      158856., 165318., 159180., 165660., 159504., 166002., 159828., 166344.,
      160152., 166686., 160476., 167028., 160800., 167370., 161124., 167712.,
      161448., 168054., 161772., 168396., 162096., 168738., 162420., 169080.,
      162744., 169422., 163068., 169764., 163392., 170106., 163716., 170448.,
      166632., 173526., 166956., 173868., 167280., 174210., 167604., 174552.,
      167928., 174894., 168252., 175236., 168576., 175578., 168900., 175920.,
      169224., 176262., 169548., 176604., 169872., 176946., 170196., 177288.,
      170520., 177630., 170844., 177972., 171168., 178314., 171492., 178656.,
      171816., 178998., 172140., 179340., 172464., 179682., 172788., 180024.,
      173112., 180366., 173436., 180708., 173760., 181050., 174084., 181392.,
      174408., 181734., 174732., 182076., 175056., 182418., 175380., 182760.,
      178296., 185838., 178620., 186180., 178944., 186522., 179268., 186864.,
      179592., 187206., 179916., 187548., 180240., 187890., 180564., 188232.,
      180888., 188574., 181212., 188916., 181536., 189258., 181860., 189600.,
      182184., 189942., 182508., 190284., 182832., 190626., 183156., 190968.,
      183480., 191310., 183804., 191652., 184128., 191994., 184452., 192336.,
      184776., 192678., 185100., 193020., 185424., 193362., 185748., 193704.,
      186072., 194046., 186396., 194388., 186720., 194730., 187044., 195072.,
      189960., 198150., 190284., 198492., 190608., 198834., 190932., 199176.,
      191256., 199518., 191580., 199860., 191904., 200202., 192228., 200544.,
      192552., 200886., 192876., 201228., 193200., 201570., 193524., 201912.,
      193848., 202254., 194172., 202596., 194496., 202938., 194820., 203280.,
      195144., 203622., 195468., 203964., 195792., 204306., 196116., 204648.,
      196440., 204990., 196764., 205332., 197088., 205674., 197412., 206016.,
      197736., 206358., 198060., 206700., 198384., 207042., 198708., 207384.,
      201624., 210462., 201948., 210804., 202272., 211146., 202596., 211488.,
      202920., 211830., 203244., 212172., 203568., 212514., 203892., 212856.,
      204216., 213198., 204540., 213540., 204864., 213882., 205188., 214224.,
      205512., 214566., 205836., 214908., 206160., 215250., 206484., 215592.,
      206808., 215934., 207132., 216276., 207456., 216618., 207780., 216960.,
      208104., 217302., 208428., 217644., 208752., 217986., 209076., 218328.,
      209400., 218670., 209724., 219012., 210048., 219354., 210372., 219696.,
      213288., 222774., 213612., 223116., 213936., 223458., 214260., 223800.,
      214584., 224142., 214908., 224484., 215232., 224826., 215556., 225168.,
      215880., 225510., 216204., 225852., 216528., 226194., 216852., 226536.,
      217176., 226878., 217500., 227220., 217824., 227562., 218148., 227904.,
      218472., 228246., 218796., 228588., 219120., 228930., 219444., 229272.,
      219768., 229614., 220092., 229956., 220416., 230298., 220740., 230640.,
      221064., 230982., 221388., 231324., 221712., 231666., 222036., 232008.};
  const std::array<int, 4> in_shape = {{3, 8, 9, 4}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, SAME3x8x9x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      4774050.,  4792080.,  4810110.,  4828140.,  4796736.,  4814856.,
      4832976.,  4851096.,  4819422.,  4837632.,  4855842.,  4874052.,
      4842108.,  4860408.,  4878708.,  4897008.,  5581989.,  5603234.,
      5624479.,  5645724.,  5608246.,  5629596.,  5650946.,  5672296.,
      5634503.,  5655958.,  5677413.,  5698868.,  5660760.,  5682320.,
      5703880.,  5725440.,  6596056.,  6620576.,  6645096.,  6669616.,
      6626336.,  6650976.,  6675616.,  6700256.,  6656616.,  6681376.,
      6706136.,  6730896.,  6686896.,  6711776.,  6736656.,  6761536.,
      7614795.,  7642650.,  7670505.,  7698360.,  7649038.,  7677028.,
      7705018.,  7733008.,  7683281.,  7711406.,  7739531.,  7767656.,
      7717524.,  7745784.,  7774044.,  7802304.,  6824536.,  6849536.,
      6874536.,  6899536.,  6854848.,  6879968.,  6905088.,  6930208.,
      6885160.,  6910400.,  6935640.,  6960880.,  6915472.,  6940832.,
      6966192.,  6991552.,  6032133.,  6054218.,  6076303.,  6098388.,
      6058574.,  6080764.,  6102954.,  6125144.,  6085015.,  6107310.,
      6129605.,  6151900.,  6111456.,  6133856.,  6156256.,  6178656.,
      5237826.,  5256936.,  5276046.,  5295156.,  5260456.,  5279656.,
      5298856.,  5318056.,  5283086.,  5302376.,  5321666.,  5340956.,
      5305716.,  5325096.,  5344476.,  5363856.,  6356508.,  6380088.,
      6403668.,  6427248.,  6383016.,  6406704.,  6430392.,  6454080.,
      6409524.,  6433320.,  6457116.,  6480912.,  6436032.,  6459936.,
      6483840.,  6507744.,  7424438.,  7452200.,  7479962.,  7507724.,
      7455112.,  7483000.,  7510888.,  7538776.,  7485786.,  7513800.,
      7541814.,  7569828.,  7516460.,  7544600.,  7572740.,  7600880.,
      8715728.,  8747744.,  8779760.,  8811776.,  8751008.,  8783168.,
      8815328.,  8847488.,  8786288.,  8818592.,  8850896.,  8883200.,
      8821568.,  8854016.,  8886464.,  8918912.,  10010442., 10046784.,
      10083126., 10119468., 10050256., 10086760., 10123264., 10159768.,
      10090070., 10126736., 10163402., 10200068., 10129884., 10166712.,
      10203540., 10240368., 8952272.,  8984864.,  9017456.,  9050048.,
      8987488.,  9020224.,  9052960.,  9085696.,  9022704.,  9055584.,
      9088464.,  9121344.,  9057920.,  9090944.,  9123968.,  9156992.,
      7893302.,  7922072.,  7950842.,  7979612.,  7923992.,  7952888.,
      7981784.,  8010680.,  7954682.,  7983704.,  8012726.,  8041748.,
      7985372.,  8014520.,  8043668.,  8072816.,  6833820.,  6858696.,
      6883572.,  6908448.,  6860056.,  6885040.,  6910024.,  6935008.,
      6886292.,  6911384.,  6936476.,  6961568.,  6912528.,  6937728.,
      6962928.,  6988128.,  7880758.,  7908488.,  7936218.,  7963948.,
      7910440.,  7938296.,  7966152.,  7994008.,  7940122.,  7968104.,
      7996086.,  8024068.,  7969804.,  7997912.,  8026020.,  8054128.,
      9191687.,  9224162.,  9256637.,  9289112.,  9226022.,  9258644.,
      9291266.,  9323888.,  9260357.,  9293126.,  9325895.,  9358664.,
      9294692.,  9327608.,  9360524.,  9393440.,  10744392., 10781696.,
      10819000., 10856304., 10783808., 10821280., 10858752., 10896224.,
      10823224., 10860864., 10898504., 10936144., 10862640., 10900448.,
      10938256., 10976064., 12300457., 12342674., 12384891., 12427108.,
      12344870., 12387276., 12429682., 12472088., 12389283., 12431878.,
      12474473., 12517068., 12433696., 12476480., 12519264., 12562048.,
      10977480., 11014944., 11052408., 11089872., 11016736., 11054368.,
      11092000., 11129632., 11055992., 11093792., 11131592., 11169392.,
      11095248., 11133216., 11171184., 11209152., 9655911.,  9688538.,
      9721165.,  9753792.,  9690094.,  9722868.,  9755642.,  9788416.,
      9724277.,  9757198.,  9790119.,  9823040.,  9758460.,  9791528.,
      9824596.,  9857664.,  8348886.,  8377104.,  8405322.,  8433540.,
      8378080.,  8406424.,  8434768.,  8463112.,  8407274.,  8435744.,
      8464214.,  8492684.,  8436468.,  8465064.,  8493660.,  8522256.,
      9465808.,  9497312.,  9528816.,  9560320.,  9498016.,  9529664.,
      9561312.,  9592960.,  9530224.,  9562016.,  9593808.,  9625600.,
      9562432.,  9594368.,  9626304.,  9658240.,  11044424., 11081344.,
      11118264., 11155184., 11081664., 11118752., 11155840., 11192928.,
      11118904., 11156160., 11193416., 11230672., 11156144., 11193568.,
      11230992., 11268416., 12882368., 12924800., 12967232., 13009664.,
      12925056., 12967680., 13010304., 13052928., 12967744., 13010560.,
      13053376., 13096192., 13010432., 13053440., 13096448., 13139456.,
      14722744., 14770784., 14818824., 14866864., 14770784., 14819040.,
      14867296., 14915552., 14818824., 14867296., 14915768., 14964240.,
      14866864., 14915552., 14964240., 15012928., 12882368., 12925056.,
      12967744., 13010432., 12924800., 12967680., 13010560., 13053440.,
      12967232., 13010304., 13053376., 13096448., 13009664., 13052928.,
      13096192., 13139456., 11044424., 11081664., 11118904., 11156144.,
      11081344., 11118752., 11156160., 11193568., 11118264., 11155840.,
      11193416., 11230992., 11155184., 11192928., 11230672., 11268416.,
      9465808.,  9498016.,  9530224.,  9562432.,  9497312.,  9529664.,
      9562016.,  9594368.,  9528816.,  9561312.,  9593808.,  9626304.,
      9560320.,  9592960.,  9625600.,  9658240.,  8348886.,  8378080.,
      8407274.,  8436468.,  8377104.,  8406424.,  8435744.,  8465064.,
      8405322.,  8434768.,  8464214.,  8493660.,  8433540.,  8463112.,
      8492684.,  8522256.,  9655911.,  9690094.,  9724277.,  9758460.,
      9688538.,  9722868.,  9757198.,  9791528.,  9721165.,  9755642.,
      9790119.,  9824596.,  9753792.,  9788416.,  9823040.,  9857664.,
      10977480., 11016736., 11055992., 11095248., 11014944., 11054368.,
      11093792., 11133216., 11052408., 11092000., 11131592., 11171184.,
      11089872., 11129632., 11169392., 11209152., 12300457., 12344870.,
      12389283., 12433696., 12342674., 12387276., 12431878., 12476480.,
      12384891., 12429682., 12474473., 12519264., 12427108., 12472088.,
      12517068., 12562048., 10744392., 10783808., 10823224., 10862640.,
      10781696., 10821280., 10860864., 10900448., 10819000., 10858752.,
      10898504., 10938256., 10856304., 10896224., 10936144., 10976064.,
      9191687.,  9226022.,  9260357.,  9294692.,  9224162.,  9258644.,
      9293126.,  9327608.,  9256637.,  9291266.,  9325895.,  9360524.,
      9289112.,  9323888.,  9358664.,  9393440.,  7880758.,  7910440.,
      7940122.,  7969804.,  7908488.,  7938296.,  7968104.,  7997912.,
      7936218.,  7966152.,  7996086.,  8026020.,  7963948.,  7994008.,
      8024068.,  8054128.,  6833820.,  6860056.,  6886292.,  6912528.,
      6858696.,  6885040.,  6911384.,  6937728.,  6883572.,  6910024.,
      6936476.,  6962928.,  6908448.,  6935008.,  6961568.,  6988128.,
      7893302.,  7923992.,  7954682.,  7985372.,  7922072.,  7952888.,
      7983704.,  8014520.,  7950842.,  7981784.,  8012726.,  8043668.,
      7979612.,  8010680.,  8041748.,  8072816.,  8952272.,  8987488.,
      9022704.,  9057920.,  8984864.,  9020224.,  9055584.,  9090944.,
      9017456.,  9052960.,  9088464.,  9123968.,  9050048.,  9085696.,
      9121344.,  9156992.,  10010442., 10050256., 10090070., 10129884.,
      10046784., 10086760., 10126736., 10166712., 10083126., 10123264.,
      10163402., 10203540., 10119468., 10159768., 10200068., 10240368.,
      8715728.,  8751008.,  8786288.,  8821568.,  8747744.,  8783168.,
      8818592.,  8854016.,  8779760.,  8815328.,  8850896.,  8886464.,
      8811776.,  8847488.,  8883200.,  8918912.,  7424438.,  7455112.,
      7485786.,  7516460.,  7452200.,  7483000.,  7513800.,  7544600.,
      7479962.,  7510888.,  7541814.,  7572740.,  7507724.,  7538776.,
      7569828.,  7600880.,  6356508.,  6383016.,  6409524.,  6436032.,
      6380088.,  6406704.,  6433320.,  6459936.,  6403668.,  6430392.,
      6457116.,  6483840.,  6427248.,  6454080.,  6480912.,  6507744.,
      5237826.,  5260456.,  5283086.,  5305716.,  5256936.,  5279656.,
      5302376.,  5325096.,  5276046.,  5298856.,  5321666.,  5344476.,
      5295156.,  5318056.,  5340956.,  5363856.,  6032133.,  6058574.,
      6085015.,  6111456.,  6054218.,  6080764.,  6107310.,  6133856.,
      6076303.,  6102954.,  6129605.,  6156256.,  6098388.,  6125144.,
      6151900.,  6178656.,  6824536.,  6854848.,  6885160.,  6915472.,
      6849536.,  6879968.,  6910400.,  6940832.,  6874536.,  6905088.,
      6935640.,  6966192.,  6899536.,  6930208.,  6960880.,  6991552.,
      7614795.,  7649038.,  7683281.,  7717524.,  7642650.,  7677028.,
      7711406.,  7745784.,  7670505.,  7705018.,  7739531.,  7774044.,
      7698360.,  7733008.,  7767656.,  7802304.,  6596056.,  6626336.,
      6656616.,  6686896.,  6620576.,  6650976.,  6681376.,  6711776.,
      6645096.,  6675616.,  6706136.,  6736656.,  6669616.,  6700256.,
      6730896.,  6761536.,  5581989.,  5608246.,  5634503.,  5660760.,
      5603234.,  5629596.,  5655958.,  5682320.,  5624479.,  5650946.,
      5677413.,  5703880.,  5645724.,  5672296.,  5698868.,  5725440.,
      4774050.,  4796736.,  4819422.,  4842108.,  4792080.,  4814856.,
      4837632.,  4860408.,  4810110.,  4832976.,  4855842.,  4878708.,
      4828140.,  4851096.,  4874052.,  4897008.};
  const std::array<int, 4> in_shape = {{3, 8, 9, 4}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 512.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, VALID3x8x9x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      281010., 286608., 292206., 297804., 281640., 287256., 292872., 298488.,
      282270., 287904., 293538., 299172., 282900., 288552., 294204., 299856.,
      283530., 289200., 294870., 300540., 284160., 289848., 295536., 301224.,
      284790., 290496., 296202., 301908., 285420., 291144., 296868., 302592.,
      286050., 291792., 297534., 303276., 286680., 292440., 298200., 303960.,
      287310., 293088., 298866., 304644., 287940., 293736., 299532., 305328.,
      288570., 294384., 300198., 306012., 289200., 295032., 300864., 306696.,
      289830., 295680., 301530., 307380., 290460., 296328., 302196., 308064.,
      291090., 296976., 302862., 308748., 291720., 297624., 303528., 309432.,
      292350., 298272., 304194., 310116., 292980., 298920., 304860., 310800.,
      293610., 299568., 305526., 311484., 294240., 300216., 306192., 312168.,
      294870., 300864., 306858., 312852., 295500., 301512., 307524., 313536.,
      296130., 302160., 308190., 314220., 296760., 302808., 308856., 314904.,
      297390., 303456., 309522., 315588., 298020., 304104., 310188., 316272.,
      303690., 309936., 316182., 322428., 304320., 310584., 316848., 323112.,
      304950., 311232., 317514., 323796., 305580., 311880., 318180., 324480.,
      306210., 312528., 318846., 325164., 306840., 313176., 319512., 325848.,
      307470., 313824., 320178., 326532., 308100., 314472., 320844., 327216.,
      308730., 315120., 321510., 327900., 309360., 315768., 322176., 328584.,
      309990., 316416., 322842., 329268., 310620., 317064., 323508., 329952.,
      311250., 317712., 324174., 330636., 311880., 318360., 324840., 331320.,
      312510., 319008., 325506., 332004., 313140., 319656., 326172., 332688.,
      313770., 320304., 326838., 333372., 314400., 320952., 327504., 334056.,
      315030., 321600., 328170., 334740., 315660., 322248., 328836., 335424.,
      316290., 322896., 329502., 336108., 316920., 323544., 330168., 336792.,
      317550., 324192., 330834., 337476., 318180., 324840., 331500., 338160.,
      318810., 325488., 332166., 338844., 319440., 326136., 332832., 339528.,
      320070., 326784., 333498., 340212., 320700., 327432., 334164., 340896.,
      326370., 333264., 340158., 347052., 327000., 333912., 340824., 347736.,
      327630., 334560., 341490., 348420., 328260., 335208., 342156., 349104.,
      328890., 335856., 342822., 349788., 329520., 336504., 343488., 350472.,
      330150., 337152., 344154., 351156., 330780., 337800., 344820., 351840.,
      331410., 338448., 345486., 352524., 332040., 339096., 346152., 353208.,
      332670., 339744., 346818., 353892., 333300., 340392., 347484., 354576.,
      333930., 341040., 348150., 355260., 334560., 341688., 348816., 355944.,
      335190., 342336., 349482., 356628., 335820., 342984., 350148., 357312.,
      336450., 343632., 350814., 357996., 337080., 344280., 351480., 358680.,
      337710., 344928., 352146., 359364., 338340., 345576., 352812., 360048.,
      338970., 346224., 353478., 360732., 339600., 346872., 354144., 361416.,
      340230., 347520., 354810., 362100., 340860., 348168., 355476., 362784.,
      341490., 348816., 356142., 363468., 342120., 349464., 356808., 364152.,
      342750., 350112., 357474., 364836., 343380., 350760., 358140., 365520.,
      349050., 356592., 364134., 371676., 349680., 357240., 364800., 372360.,
      350310., 357888., 365466., 373044., 350940., 358536., 366132., 373728.,
      351570., 359184., 366798., 374412., 352200., 359832., 367464., 375096.,
      352830., 360480., 368130., 375780., 353460., 361128., 368796., 376464.,
      354090., 361776., 369462., 377148., 354720., 362424., 370128., 377832.,
      355350., 363072., 370794., 378516., 355980., 363720., 371460., 379200.,
      356610., 364368., 372126., 379884., 357240., 365016., 372792., 380568.,
      357870., 365664., 373458., 381252., 358500., 366312., 374124., 381936.,
      359130., 366960., 374790., 382620., 359760., 367608., 375456., 383304.,
      360390., 368256., 376122., 383988., 361020., 368904., 376788., 384672.,
      361650., 369552., 377454., 385356., 362280., 370200., 378120., 386040.,
      362910., 370848., 378786., 386724., 363540., 371496., 379452., 387408.,
      364170., 372144., 380118., 388092., 364800., 372792., 380784., 388776.,
      365430., 373440., 381450., 389460., 366060., 374088., 382116., 390144.,
      371730., 379920., 388110., 396300., 372360., 380568., 388776., 396984.,
      372990., 381216., 389442., 397668., 373620., 381864., 390108., 398352.,
      374250., 382512., 390774., 399036., 374880., 383160., 391440., 399720.,
      375510., 383808., 392106., 400404., 376140., 384456., 392772., 401088.,
      376770., 385104., 393438., 401772., 377400., 385752., 394104., 402456.,
      378030., 386400., 394770., 403140., 378660., 387048., 395436., 403824.,
      379290., 387696., 396102., 404508., 379920., 388344., 396768., 405192.,
      380550., 388992., 397434., 405876., 381180., 389640., 398100., 406560.,
      381810., 390288., 398766., 407244., 382440., 390936., 399432., 407928.,
      383070., 391584., 400098., 408612., 383700., 392232., 400764., 409296.,
      384330., 392880., 401430., 409980., 384960., 393528., 402096., 410664.,
      385590., 394176., 402762., 411348., 386220., 394824., 403428., 412032.,
      386850., 395472., 404094., 412716., 387480., 396120., 404760., 413400.,
      388110., 396768., 405426., 414084., 388740., 397416., 406092., 414768.,
      394410., 403248., 412086., 420924., 395040., 403896., 412752., 421608.,
      395670., 404544., 413418., 422292., 396300., 405192., 414084., 422976.,
      396930., 405840., 414750., 423660., 397560., 406488., 415416., 424344.,
      398190., 407136., 416082., 425028., 398820., 407784., 416748., 425712.,
      399450., 408432., 417414., 426396., 400080., 409080., 418080., 427080.,
      400710., 409728., 418746., 427764., 401340., 410376., 419412., 428448.,
      401970., 411024., 420078., 429132., 402600., 411672., 420744., 429816.,
      403230., 412320., 421410., 430500., 403860., 412968., 422076., 431184.,
      404490., 413616., 422742., 431868., 405120., 414264., 423408., 432552.,
      405750., 414912., 424074., 433236., 406380., 415560., 424740., 433920.,
      407010., 416208., 425406., 434604., 407640., 416856., 426072., 435288.,
      408270., 417504., 426738., 435972., 408900., 418152., 427404., 436656.,
      409530., 418800., 428070., 437340., 410160., 419448., 428736., 438024.,
      410790., 420096., 429402., 438708., 411420., 420744., 430068., 439392.,
      417090., 426576., 436062., 445548., 417720., 427224., 436728., 446232.,
      418350., 427872., 437394., 446916., 418980., 428520., 438060., 447600.,
      419610., 429168., 438726., 448284., 420240., 429816., 439392., 448968.,
      420870., 430464., 440058., 449652., 421500., 431112., 440724., 450336.,
      422130., 431760., 441390., 451020., 422760., 432408., 442056., 451704.,
      423390., 433056., 442722., 452388., 424020., 433704., 443388., 453072.,
      424650., 434352., 444054., 453756., 425280., 435000., 444720., 454440.,
      425910., 435648., 445386., 455124., 426540., 436296., 446052., 455808.,
      427170., 436944., 446718., 456492., 427800., 437592., 447384., 457176.,
      428430., 438240., 448050., 457860., 429060., 438888., 448716., 458544.,
      429690., 439536., 449382., 459228., 430320., 440184., 450048., 459912.,
      430950., 440832., 450714., 460596., 431580., 441480., 451380., 461280.,
      432210., 442128., 452046., 461964., 432840., 442776., 452712., 462648.,
      433470., 443424., 453378., 463332., 434100., 444072., 454044., 464016.};
  const std::array<int, 4> in_shape = {{3, 8, 9, 4}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, SAME3x8x10x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1965460., 2248340., 2531700., 2815525., 2535750., 2255540., 1974910.,
      2387742., 2730648., 3073950., 3417630., 3077190., 2736408., 2395302.,
      2814854., 3218236., 3621870., 4025735., 3623760., 3221596., 2819264.,
      3244696., 3708704., 4172760., 4636840., 4172760., 3708704., 3244696.,
      2819264., 3221596., 3623760., 4025735., 3621870., 3218236., 2814854.,
      2395302., 2736408., 3077190., 3417630., 3073950., 2730648., 2387742.,
      1974910., 2255540., 2535750., 2815525., 2531700., 2248340., 1965460.};
  const std::array<int, 4> in_shape = {{3, 8, 10, 1}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, VALID3x8x10x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      36760., 37060., 37360., 37660., 37960., 38260., 38560., 39760., 40060.,
      40360., 40660., 40960., 41260., 41560., 42760., 43060., 43360., 43660.,
      43960., 44260., 44560., 45760., 46060., 46360., 46660., 46960., 47260.,
      47560., 48760., 49060., 49360., 49660., 49960., 50260., 50560., 51760.,
      52060., 52360., 52660., 52960., 53260., 53560., 54760., 55060., 55360.,
      55660., 55960., 56260., 56560.};
  const std::array<int, 4> in_shape = {{3, 8, 10, 1}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, SAME3x8x10x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      3920000., 3930920., 4484140., 4496680., 5049225., 5063400., 5615225.,
      5631050., 5057190., 5071500., 4498300., 4511080., 3938585., 3949820.,
      4761750., 4775484., 5445528., 5461296., 6130080., 6147900., 6815370.,
      6835260., 6136398., 6154380., 5456760., 5472816., 4776492., 4790604.,
      5612950., 5629708., 6417236., 6436472., 7222005., 7243740., 8027215.,
      8051470., 7225596., 7247520., 6423620., 6443192., 5621329., 5638528.,
      6469400., 6489392., 7394464., 7417408., 8319600., 8345520., 9244760.,
      9273680., 8319384., 8345520., 7394080., 7417408., 6468896., 6489392.,
      5620300., 5638528., 6422276., 6443192., 7223895., 7247520., 8025115.,
      8051470., 7219926., 7243740., 6415220., 6436472., 5611039., 5629708.,
      4774350., 4790604., 5454168., 5472816., 6133320., 6154380., 6811770.,
      6835260., 6126678., 6147900., 5442360., 5461296., 4758852., 4775484.,
      3935750., 3949820., 4494940., 4511080., 5053275., 5071500., 5610725.,
      5631050., 5045040., 5063400., 4480300., 4496680., 3916535., 3930920.};
  const std::array<int, 4> in_shape = {{3, 8, 10, 1}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, VALID3x8x10x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      71420.,  73520.,  71996.,  74120.,  72572.,  74720.,  73148.,  75320.,
      73724.,  75920.,  74300.,  76520.,  74876.,  77120.,  77180.,  79520.,
      77756.,  80120.,  78332.,  80720.,  78908.,  81320.,  79484.,  81920.,
      80060.,  82520.,  80636.,  83120.,  82940.,  85520.,  83516.,  86120.,
      84092.,  86720.,  84668.,  87320.,  85244.,  87920.,  85820.,  88520.,
      86396.,  89120.,  88700.,  91520.,  89276.,  92120.,  89852.,  92720.,
      90428.,  93320.,  91004.,  93920.,  91580.,  94520.,  92156.,  95120.,
      94460.,  97520.,  95036.,  98120.,  95612.,  98720.,  96188.,  99320.,
      96764.,  99920.,  97340.,  100520., 97916.,  101120., 100220., 103520.,
      100796., 104120., 101372., 104720., 101948., 105320., 102524., 105920.,
      103100., 106520., 103676., 107120., 105980., 109520., 106556., 110120.,
      107132., 110720., 107708., 111320., 108284., 111920., 108860., 112520.,
      109436., 113120.};
  const std::array<int, 4> in_shape = {{3, 8, 10, 1}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, SAME3x8x10x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      3207256., 3218176., 3229096., 3240016., 3670364., 3682904., 3695444.,
      3707984., 4131251., 4145426., 4159601., 4173776., 4589857., 4605682.,
      4621507., 4637332., 4159846., 4174156., 4188466., 4202776., 3732748.,
      3745528., 3758308., 3771088., 3256911., 3268146., 3279381., 3290616.,
      4003206., 4016940., 4030674., 4044408., 4578200., 4593968., 4609736.,
      4625504., 5150116., 5167936., 5185756., 5203576., 5718882., 5738772.,
      5758662., 5778552., 5175902., 5193884., 5211866., 5229848., 4636728.,
      4652784., 4668840., 4684896., 4044600., 4058712., 4072824., 4086936.,
      4782006., 4798764., 4815522., 4832280., 5465476., 5484712., 5503948.,
      5523184., 6144771., 6166506., 6188241., 6209976., 6819807., 6844062.,
      6868317., 6892572., 6165588., 6187512., 6209436., 6231360., 5516308.,
      5535880., 5555452., 5575024., 4810099., 4827298., 4844497., 4861696.,
      5535256., 5555248., 5575240., 5595232., 6322592., 6345536., 6368480.,
      6391424., 7104416., 7130336., 7156256., 7182176., 7880632., 7909552.,
      7938472., 7967392., 7118104., 7144240., 7170376., 7196512., 6361888.,
      6385216., 6408544., 6431872., 5545008., 5565504., 5586000., 5606496.,
      4896612., 4914840., 4933068., 4951296., 5594708., 5615624., 5636540.,
      5657456., 6287461., 6311086., 6334711., 6358336., 6974787., 7001142.,
      7027497., 7053852., 6308006., 6331820., 6355634., 6379448., 5647332.,
      5668584., 5689836., 5711088., 4920657., 4939326., 4957995., 4976664.,
      4336158., 4352412., 4368666., 4384920., 4957144., 4975792., 4994440.,
      5013088., 5573196., 5594256., 5615316., 5636376., 6184242., 6207732.,
      6231222., 6254712., 5602758., 5623980., 5645202., 5666424., 5026936.,
      5045872., 5064808., 5083744., 4379536., 4396168., 4412800., 4429432.,
      3862294., 3876364., 3890434., 3904504., 4419500., 4435640., 4451780.,
      4467920., 4972421., 4990646., 5008871., 5027096., 5520997., 5541322.,
      5561647., 5581972., 5013160., 5031520., 5049880., 5068240., 4510300.,
      4526680., 4543060., 4559440., 3930045., 3944430., 3958815., 3973200.};
  const std::array<int, 4> in_shape = {{3, 8, 10, 1}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 512.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, VALID3x8x10x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      140740., 142840., 144940., 147040., 141868., 143992., 146116., 148240.,
      142996., 145144., 147292., 149440., 144124., 146296., 148468., 150640.,
      145252., 147448., 149644., 151840., 146380., 148600., 150820., 153040.,
      147508., 149752., 151996., 154240., 152020., 154360., 156700., 159040.,
      153148., 155512., 157876., 160240., 154276., 156664., 159052., 161440.,
      155404., 157816., 160228., 162640., 156532., 158968., 161404., 163840.,
      157660., 160120., 162580., 165040., 158788., 161272., 163756., 166240.,
      163300., 165880., 168460., 171040., 164428., 167032., 169636., 172240.,
      165556., 168184., 170812., 173440., 166684., 169336., 171988., 174640.,
      167812., 170488., 173164., 175840., 168940., 171640., 174340., 177040.,
      170068., 172792., 175516., 178240., 174580., 177400., 180220., 183040.,
      175708., 178552., 181396., 184240., 176836., 179704., 182572., 185440.,
      177964., 180856., 183748., 186640., 179092., 182008., 184924., 187840.,
      180220., 183160., 186100., 189040., 181348., 184312., 187276., 190240.,
      185860., 188920., 191980., 195040., 186988., 190072., 193156., 196240.,
      188116., 191224., 194332., 197440., 189244., 192376., 195508., 198640.,
      190372., 193528., 196684., 199840., 191500., 194680., 197860., 201040.,
      192628., 195832., 199036., 202240., 197140., 200440., 203740., 207040.,
      198268., 201592., 204916., 208240., 199396., 202744., 206092., 209440.,
      200524., 203896., 207268., 210640., 201652., 205048., 208444., 211840.,
      202780., 206200., 209620., 213040., 203908., 207352., 210796., 214240.,
      208420., 211960., 215500., 219040., 209548., 213112., 216676., 220240.,
      210676., 214264., 217852., 221440., 211804., 215416., 219028., 222640.,
      212932., 216568., 220204., 223840., 214060., 217720., 221380., 225040.,
      215188., 218872., 222556., 226240.};
  const std::array<int, 4> in_shape = {{3, 8, 10, 1}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, SAME3x8x10x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      3916535., 3930920., 4480300., 4496680., 5045040., 5063400., 5610725.,
      5631050., 5053275., 5071500., 4494940., 4511080., 3935750., 3949820.,
      4758852., 4775484., 5442360., 5461296., 6126678., 6147900., 6811770.,
      6835260., 6133320., 6154380., 5454168., 5472816., 4774350., 4790604.,
      5611039., 5629708., 6415220., 6436472., 7219926., 7243740., 8025115.,
      8051470., 7223895., 7247520., 6422276., 6443192., 5620300., 5638528.,
      6468896., 6489392., 7394080., 7417408., 8319384., 8345520., 9244760.,
      9273680., 8319600., 8345520., 7394464., 7417408., 6469400., 6489392.,
      5621329., 5638528., 6423620., 6443192., 7225596., 7247520., 8027215.,
      8051470., 7222005., 7243740., 6417236., 6436472., 5612950., 5629708.,
      4776492., 4790604., 5456760., 5472816., 6136398., 6154380., 6815370.,
      6835260., 6130080., 6147900., 5445528., 5461296., 4761750., 4775484.,
      3938585., 3949820., 4498300., 4511080., 5057190., 5071500., 5615225.,
      5631050., 5049225., 5063400., 4484140., 4496680., 3920000., 3930920.};
  const std::array<int, 4> in_shape = {{3, 8, 10, 2}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, VALID3x8x10x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      73220.,  73520.,  73820.,  74120.,  74420.,  74720.,  75020.,  75320.,
      75620.,  75920.,  76220.,  76520.,  76820.,  77120.,  79220.,  79520.,
      79820.,  80120.,  80420.,  80720.,  81020.,  81320.,  81620.,  81920.,
      82220.,  82520.,  82820.,  83120.,  85220.,  85520.,  85820.,  86120.,
      86420.,  86720.,  87020.,  87320.,  87620.,  87920.,  88220.,  88520.,
      88820.,  89120.,  91220.,  91520.,  91820.,  92120.,  92420.,  92720.,
      93020.,  93320.,  93620.,  93920.,  94220.,  94520.,  94820.,  95120.,
      97220.,  97520.,  97820.,  98120.,  98420.,  98720.,  99020.,  99320.,
      99620.,  99920.,  100220., 100520., 100820., 101120., 103220., 103520.,
      103820., 104120., 104420., 104720., 105020., 105320., 105620., 105920.,
      106220., 106520., 106820., 107120., 109220., 109520., 109820., 110120.,
      110420., 110720., 111020., 111320., 111620., 111920., 112220., 112520.,
      112820., 113120.};
  const std::array<int, 4> in_shape = {{3, 8, 10, 2}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, SAME3x8x10x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1618439., 1631214., 1632256., 1645136., 1864920., 1879640., 1880664.,
      1895504., 2095657., 2112096., 2113298., 2129872., 2327230., 2345418.,
      2346738., 2365076., 2132849., 2149302., 2150476., 2167064., 1938776.,
      1953464., 1954552., 1969360., 1693615., 1706508., 1707314., 1720312.,
      2102714., 2117512., 2119212., 2134136., 2420688., 2437744., 2439472.,
      2456672., 2728214., 2747308., 2749248., 2768504., 3036740., 3057908.,
      3059988., 3081336., 2777014., 2796176., 2797980., 2817304., 2517456.,
      2534576., 2536176., 2553440., 2201562., 2216604., 2217816., 2232984.,
      2642149., 2659390., 2660908., 2678296., 3038536., 3058408., 3059880.,
      3079920., 3429531., 3451820., 3453418., 3475896., 3821450., 3846198.,
      3847838., 3872796., 3487779., 3510190., 3511544., 3534144., 3154376.,
      3174408., 3175560., 3195760., 2759629., 2777240., 2778018., 2795776.,
      3228344., 3248448., 3248944., 3269216., 3708864., 3732032., 3732288.,
      3755648., 4188808., 4214832., 4215008., 4241248., 4669360., 4698288.,
      4698288., 4727456., 4188808., 4215008., 4214832., 4241248., 3708864.,
      3732288., 3732032., 3755648., 3228344., 3248944., 3248448., 3269216.,
      2759629., 2778018., 2777240., 2795776., 3154376., 3175560., 3174408.,
      3195760., 3487779., 3511544., 3510190., 3534144., 3821450., 3847838.,
      3846198., 3872796., 3429531., 3453418., 3451820., 3475896., 3038536.,
      3059880., 3058408., 3079920., 2642149., 2660908., 2659390., 2678296.,
      2201562., 2217816., 2216604., 2232984., 2517456., 2536176., 2534576.,
      2553440., 2777014., 2797980., 2796176., 2817304., 3036740., 3059988.,
      3057908., 3081336., 2728214., 2749248., 2747308., 2768504., 2420688.,
      2439472., 2437744., 2456672., 2102714., 2119212., 2117512., 2134136.,
      1693615., 1707314., 1706508., 1720312., 1938776., 1954552., 1953464.,
      1969360., 2132849., 2150476., 2149302., 2167064., 2327230., 2346738.,
      2345418., 2365076., 2095657., 2113298., 2112096., 2129872., 1864920.,
      1880664., 1879640., 1895504., 1618439., 1632256., 1631214., 1645136.};
  const std::array<int, 4> in_shape = {{3, 8, 10, 2}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 256.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, VALID3x8x10x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      142264., 146440., 142840., 147040., 143416., 147640., 143992., 148240.,
      144568., 148840., 145144., 149440., 145720., 150040., 146296., 150640.,
      146872., 151240., 147448., 151840., 148024., 152440., 148600., 153040.,
      149176., 153640., 149752., 154240., 153784., 158440., 154360., 159040.,
      154936., 159640., 155512., 160240., 156088., 160840., 156664., 161440.,
      157240., 162040., 157816., 162640., 158392., 163240., 158968., 163840.,
      159544., 164440., 160120., 165040., 160696., 165640., 161272., 166240.,
      165304., 170440., 165880., 171040., 166456., 171640., 167032., 172240.,
      167608., 172840., 168184., 173440., 168760., 174040., 169336., 174640.,
      169912., 175240., 170488., 175840., 171064., 176440., 171640., 177040.,
      172216., 177640., 172792., 178240., 176824., 182440., 177400., 183040.,
      177976., 183640., 178552., 184240., 179128., 184840., 179704., 185440.,
      180280., 186040., 180856., 186640., 181432., 187240., 182008., 187840.,
      182584., 188440., 183160., 189040., 183736., 189640., 184312., 190240.,
      188344., 194440., 188920., 195040., 189496., 195640., 190072., 196240.,
      190648., 196840., 191224., 197440., 191800., 198040., 192376., 198640.,
      192952., 199240., 193528., 199840., 194104., 200440., 194680., 201040.,
      195256., 201640., 195832., 202240., 199864., 206440., 200440., 207040.,
      201016., 207640., 201592., 208240., 202168., 208840., 202744., 209440.,
      203320., 210040., 203896., 210640., 204472., 211240., 205048., 211840.,
      205624., 212440., 206200., 213040., 206776., 213640., 207352., 214240.,
      211384., 218440., 211960., 219040., 212536., 219640., 213112., 220240.,
      213688., 220840., 214264., 221440., 214840., 222040., 215416., 222640.,
      215992., 223240., 216568., 223840., 217144., 224440., 217720., 225040.,
      218296., 225640., 218872., 226240.};
  const std::array<int, 4> in_shape = {{3, 8, 10, 2}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, SAME3x8x10x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      6386983.,  6408718.,  6430453.,  6452188.,  6414512.,  6436352.,
      6458192.,  6480032.,  7309360.,  7334320.,  7359280.,  7384240.,
      7340728.,  7365808.,  7390888.,  7415968.,  8227355.,  8255570.,
      8283785.,  8312000.,  8262502.,  8290852.,  8319202.,  8347552.,
      9140848.,  9172348.,  9203848.,  9235348.,  9179714.,  9211364.,
      9243014.,  9274664.,  8284573.,  8313058.,  8341543.,  8370028.,
      8319692.,  8348312.,  8376932.,  8405552.,  7434064.,  7459504.,
      7484944.,  7510384.,  7465496.,  7491056.,  7516616.,  7542176.,
      6486529.,  6508894.,  6531259.,  6553624.,  6513822.,  6536292.,
      6558762.,  6581232.,  7973542.,  8000884.,  8028226.,  8055568.,
      8006412.,  8033880.,  8061348.,  8088816.,  9118976.,  9150368.,
      9181760.,  9213152.,  9156400.,  9187936.,  9219472.,  9251008.,
      10258326., 10293804., 10329282., 10364760., 10300232., 10335872.,
      10371512., 10407152., 11391448., 11431048., 11470648., 11510248.,
      11437764., 11477544., 11517324., 11557104., 10310034., 10345836.,
      10381638., 10417440., 10351804., 10387768., 10423732., 10459696.,
      9236160.,  9268128.,  9300096.,  9332064.,  9273456.,  9305568.,
      9337680.,  9369792.,  8056818.,  8084916.,  8113014.,  8141112.,
      8089200.,  8117424.,  8145648.,  8173872.,  9526641.,  9560010.,
      9593379.,  9626748.,  9564012.,  9597528.,  9631044.,  9664560.,
      10888432., 10926736., 10965040., 11003344., 10930952., 10969424.,
      11007896., 11046368., 12241957., 12285238., 12328519., 12371800.,
      12289542., 12333012., 12376482., 12419952., 13587048., 13635348.,
      13683648., 13731948., 13639614., 13688124., 13736634., 13785144.,
      12283835., 12327494., 12371153., 12414812., 12331176., 12375024.,
      12418872., 12462720., 10990416., 11029392., 11068368., 11107344.,
      11032616., 11071760., 11110904., 11150048., 9583567.,  9617818.,
      9652069.,  9686320.,  9620198.,  9654596.,  9688994.,  9723392.,
      11029480., 11069296., 11109112., 11148928., 11070512., 11110496.,
      11150480., 11190464., 12598528., 12644224., 12689920., 12735616.,
      12645184., 12691072., 12736960., 12782848., 14156648., 14208272.,
      14259896., 14311520., 14208832., 14260672., 14312512., 14364352.,
      15703648., 15761248., 15818848., 15876448., 15761264., 15819104.,
      15876944., 15934784., 14184376., 14236432., 14288488., 14340544.,
      14236208., 14288480., 14340752., 14393024., 12677632., 12724096.,
      12770560., 12817024., 12723776., 12770432., 12817088., 12863744.,
      11049976., 11090800., 11131624., 11172448., 11090016., 11131008.,
      11172000., 11212992., 9758149.,  9794458.,  9830767.,  9867076.,
      9793224.,  9829680.,  9866136.,  9902592.,  11149520., 11191184.,
      11232848., 11274512., 11189416., 11231248., 11273080., 11314912.,
      12530289., 12577350., 12624411., 12671472., 12574922., 12622172.,
      12669422., 12716672., 13900288., 13952788., 14005288., 14057788.,
      13949574., 14002284., 14054994., 14107704., 12571623., 12619062.,
      12666501., 12713940., 12616012., 12663640., 12711268., 12758896.,
      11255088., 11297424., 11339760., 11382096., 11294664., 11337168.,
      11379672., 11422176., 9806979.,  9844170.,  9881361.,  9918552.,
      9841314.,  9878652.,  9915990.,  9953328.,  8642358.,  8674740.,
      8707122.,  8739504.,  8672316.,  8704824.,  8737332.,  8769840.,
      9880192.,  9917344.,  9954496.,  9991648.,  9914288.,  9951584.,
      9988880.,  10026176., 11108230., 11150188., 11192146., 11234104.,
      11146392., 11188512., 11230632., 11272752., 12326328., 12373128.,
      12419928., 12466728., 12368484., 12415464., 12462444., 12509424.,
      11167490., 11209772., 11252054., 11294336., 11205516., 11247960.,
      11290404., 11332848., 10019904., 10057632., 10095360., 10133088.,
      10053872., 10091744., 10129616., 10167488., 8729602.,  8762740.,
      8795878.,  8829016.,  8759072.,  8792336.,  8825600.,  8858864.,
      7698907.,  7726942.,  7754977.,  7783012.,  7724588.,  7752728.,
      7780868.,  7809008.,  8809744.,  8841904.,  8874064.,  8906224.,
      8839000.,  8871280.,  8903560.,  8935840.,  9912071.,  9948386.,
      9984701.,  10021016., 9944842.,  9981292.,  10017742., 10054192.,
      11005768., 11046268., 11086768., 11127268., 11041994., 11082644.,
      11123294., 11163944., 9993577.,  10030162., 10066747., 10103332.,
      10026320., 10063040., 10099760., 10136480., 8991280.,  9023920.,
      9056560.,  9089200.,  9020600.,  9053360.,  9086120.,  9118880.,
      7834645.,  7863310.,  7891975.,  7920640.,  7860090.,  7888860.,
      7917630.,  7946400.};
  const std::array<int, 4> in_shape = {{3, 8, 10, 2}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 512.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, VALID3x8x10x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      280352., 284528., 288704., 292880., 281480., 285680., 289880., 294080.,
      282608., 286832., 291056., 295280., 283736., 287984., 292232., 296480.,
      284864., 289136., 293408., 297680., 285992., 290288., 294584., 298880.,
      287120., 291440., 295760., 300080., 288248., 292592., 296936., 301280.,
      289376., 293744., 298112., 302480., 290504., 294896., 299288., 303680.,
      291632., 296048., 300464., 304880., 292760., 297200., 301640., 306080.,
      293888., 298352., 302816., 307280., 295016., 299504., 303992., 308480.,
      302912., 307568., 312224., 316880., 304040., 308720., 313400., 318080.,
      305168., 309872., 314576., 319280., 306296., 311024., 315752., 320480.,
      307424., 312176., 316928., 321680., 308552., 313328., 318104., 322880.,
      309680., 314480., 319280., 324080., 310808., 315632., 320456., 325280.,
      311936., 316784., 321632., 326480., 313064., 317936., 322808., 327680.,
      314192., 319088., 323984., 328880., 315320., 320240., 325160., 330080.,
      316448., 321392., 326336., 331280., 317576., 322544., 327512., 332480.,
      325472., 330608., 335744., 340880., 326600., 331760., 336920., 342080.,
      327728., 332912., 338096., 343280., 328856., 334064., 339272., 344480.,
      329984., 335216., 340448., 345680., 331112., 336368., 341624., 346880.,
      332240., 337520., 342800., 348080., 333368., 338672., 343976., 349280.,
      334496., 339824., 345152., 350480., 335624., 340976., 346328., 351680.,
      336752., 342128., 347504., 352880., 337880., 343280., 348680., 354080.,
      339008., 344432., 349856., 355280., 340136., 345584., 351032., 356480.,
      348032., 353648., 359264., 364880., 349160., 354800., 360440., 366080.,
      350288., 355952., 361616., 367280., 351416., 357104., 362792., 368480.,
      352544., 358256., 363968., 369680., 353672., 359408., 365144., 370880.,
      354800., 360560., 366320., 372080., 355928., 361712., 367496., 373280.,
      357056., 362864., 368672., 374480., 358184., 364016., 369848., 375680.,
      359312., 365168., 371024., 376880., 360440., 366320., 372200., 378080.,
      361568., 367472., 373376., 379280., 362696., 368624., 374552., 380480.,
      370592., 376688., 382784., 388880., 371720., 377840., 383960., 390080.,
      372848., 378992., 385136., 391280., 373976., 380144., 386312., 392480.,
      375104., 381296., 387488., 393680., 376232., 382448., 388664., 394880.,
      377360., 383600., 389840., 396080., 378488., 384752., 391016., 397280.,
      379616., 385904., 392192., 398480., 380744., 387056., 393368., 399680.,
      381872., 388208., 394544., 400880., 383000., 389360., 395720., 402080.,
      384128., 390512., 396896., 403280., 385256., 391664., 398072., 404480.,
      393152., 399728., 406304., 412880., 394280., 400880., 407480., 414080.,
      395408., 402032., 408656., 415280., 396536., 403184., 409832., 416480.,
      397664., 404336., 411008., 417680., 398792., 405488., 412184., 418880.,
      399920., 406640., 413360., 420080., 401048., 407792., 414536., 421280.,
      402176., 408944., 415712., 422480., 403304., 410096., 416888., 423680.,
      404432., 411248., 418064., 424880., 405560., 412400., 419240., 426080.,
      406688., 413552., 420416., 427280., 407816., 414704., 421592., 428480.,
      415712., 422768., 429824., 436880., 416840., 423920., 431000., 438080.,
      417968., 425072., 432176., 439280., 419096., 426224., 433352., 440480.,
      420224., 427376., 434528., 441680., 421352., 428528., 435704., 442880.,
      422480., 429680., 436880., 444080., 423608., 430832., 438056., 445280.,
      424736., 431984., 439232., 446480., 425864., 433136., 440408., 447680.,
      426992., 434288., 441584., 448880., 428120., 435440., 442760., 450080.,
      429248., 436592., 443936., 451280., 430376., 437744., 445112., 452480.};
  const std::array<int, 4> in_shape = {{3, 8, 10, 2}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, SAME3x8x10x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      3930045., 3944430., 3958815., 3973200., 4510300., 4526680., 4543060.,
      4559440., 5013160., 5031520., 5049880., 5068240., 5520997., 5541322.,
      5561647., 5581972., 4972421., 4990646., 5008871., 5027096., 4419500.,
      4435640., 4451780., 4467920., 3862294., 3876364., 3890434., 3904504.,
      4379536., 4396168., 4412800., 4429432., 5026936., 5045872., 5064808.,
      5083744., 5602758., 5623980., 5645202., 5666424., 6184242., 6207732.,
      6231222., 6254712., 5573196., 5594256., 5615316., 5636376., 4957144.,
      4975792., 4994440., 5013088., 4336158., 4352412., 4368666., 4384920.,
      4920657., 4939326., 4957995., 4976664., 5647332., 5668584., 5689836.,
      5711088., 6308006., 6331820., 6355634., 6379448., 6974787., 7001142.,
      7027497., 7053852., 6287461., 6311086., 6334711., 6358336., 5594708.,
      5615624., 5636540., 5657456., 4896612., 4914840., 4933068., 4951296.,
      5545008., 5565504., 5586000., 5606496., 6361888., 6385216., 6408544.,
      6431872., 7118104., 7144240., 7170376., 7196512., 7880632., 7909552.,
      7938472., 7967392., 7104416., 7130336., 7156256., 7182176., 6322592.,
      6345536., 6368480., 6391424., 5535256., 5555248., 5575240., 5595232.,
      4810099., 4827298., 4844497., 4861696., 5516308., 5535880., 5555452.,
      5575024., 6165588., 6187512., 6209436., 6231360., 6819807., 6844062.,
      6868317., 6892572., 6144771., 6166506., 6188241., 6209976., 5465476.,
      5484712., 5503948., 5523184., 4782006., 4798764., 4815522., 4832280.,
      4044600., 4058712., 4072824., 4086936., 4636728., 4652784., 4668840.,
      4684896., 5175902., 5193884., 5211866., 5229848., 5718882., 5738772.,
      5758662., 5778552., 5150116., 5167936., 5185756., 5203576., 4578200.,
      4593968., 4609736., 4625504., 4003206., 4016940., 4030674., 4044408.,
      3256911., 3268146., 3279381., 3290616., 3732748., 3745528., 3758308.,
      3771088., 4159846., 4174156., 4188466., 4202776., 4589857., 4605682.,
      4621507., 4637332., 4131251., 4145426., 4159601., 4173776., 3670364.,
      3682904., 3695444., 3707984., 3207256., 3218176., 3229096., 3240016.};
  const std::array<int, 4> in_shape = {{3, 8, 10, 4}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 512.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, VALID3x8x10x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      146140., 146440., 146740., 147040., 147340., 147640., 147940., 148240.,
      148540., 148840., 149140., 149440., 149740., 150040., 150340., 150640.,
      150940., 151240., 151540., 151840., 152140., 152440., 152740., 153040.,
      153340., 153640., 153940., 154240., 158140., 158440., 158740., 159040.,
      159340., 159640., 159940., 160240., 160540., 160840., 161140., 161440.,
      161740., 162040., 162340., 162640., 162940., 163240., 163540., 163840.,
      164140., 164440., 164740., 165040., 165340., 165640., 165940., 166240.,
      170140., 170440., 170740., 171040., 171340., 171640., 171940., 172240.,
      172540., 172840., 173140., 173440., 173740., 174040., 174340., 174640.,
      174940., 175240., 175540., 175840., 176140., 176440., 176740., 177040.,
      177340., 177640., 177940., 178240., 182140., 182440., 182740., 183040.,
      183340., 183640., 183940., 184240., 184540., 184840., 185140., 185440.,
      185740., 186040., 186340., 186640., 186940., 187240., 187540., 187840.,
      188140., 188440., 188740., 189040., 189340., 189640., 189940., 190240.,
      194140., 194440., 194740., 195040., 195340., 195640., 195940., 196240.,
      196540., 196840., 197140., 197440., 197740., 198040., 198340., 198640.,
      198940., 199240., 199540., 199840., 200140., 200440., 200740., 201040.,
      201340., 201640., 201940., 202240., 206140., 206440., 206740., 207040.,
      207340., 207640., 207940., 208240., 208540., 208840., 209140., 209440.,
      209740., 210040., 210340., 210640., 210940., 211240., 211540., 211840.,
      212140., 212440., 212740., 213040., 213340., 213640., 213940., 214240.,
      218140., 218440., 218740., 219040., 219340., 219640., 219940., 220240.,
      220540., 220840., 221140., 221440., 221740., 222040., 222340., 222640.,
      222940., 223240., 223540., 223840., 224140., 224440., 224740., 225040.,
      225340., 225640., 225940., 226240.};
  const std::array<int, 4> in_shape = {{3, 8, 10, 4}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, SAME3x8x10x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      7834645.,  7860090.,  7863310.,  7888860.,  7891975.,  7917630.,
      7920640.,  7946400.,  8991280.,  9020600.,  9023920.,  9053360.,
      9056560.,  9086120.,  9089200.,  9118880.,  9993577.,  10026320.,
      10030162., 10063040., 10066747., 10099760., 10103332., 10136480.,
      11005768., 11041994., 11046268., 11082644., 11086768., 11123294.,
      11127268., 11163944., 9912071.,  9944842.,  9948386.,  9981292.,
      9984701.,  10017742., 10021016., 10054192., 8809744.,  8839000.,
      8841904.,  8871280.,  8874064.,  8903560.,  8906224.,  8935840.,
      7698907.,  7724588.,  7726942.,  7752728.,  7754977.,  7780868.,
      7783012.,  7809008.,  8729602.,  8759072.,  8762740.,  8792336.,
      8795878.,  8825600.,  8829016.,  8858864.,  10019904., 10053872.,
      10057632., 10091744., 10095360., 10129616., 10133088., 10167488.,
      11167490., 11205516., 11209772., 11247960., 11252054., 11290404.,
      11294336., 11332848., 12326328., 12368484., 12373128., 12415464.,
      12419928., 12462444., 12466728., 12509424., 11108230., 11146392.,
      11150188., 11188512., 11192146., 11230632., 11234104., 11272752.,
      9880192.,  9914288.,  9917344.,  9951584.,  9954496.,  9988880.,
      9991648.,  10026176., 8642358.,  8672316.,  8674740.,  8704824.,
      8707122.,  8737332.,  8739504.,  8769840.,  9806979.,  9841314.,
      9844170.,  9878652.,  9881361.,  9915990.,  9918552.,  9953328.,
      11255088., 11294664., 11297424., 11337168., 11339760., 11379672.,
      11382096., 11422176., 12571623., 12616012., 12619062., 12663640.,
      12666501., 12711268., 12713940., 12758896., 13900288., 13949574.,
      13952788., 14002284., 14005288., 14054994., 14057788., 14107704.,
      12530289., 12574922., 12577350., 12622172., 12624411., 12669422.,
      12671472., 12716672., 11149520., 11189416., 11191184., 11231248.,
      11232848., 11273080., 11274512., 11314912., 9758149.,  9793224.,
      9794458.,  9829680.,  9830767.,  9866136.,  9867076.,  9902592.,
      11049976., 11090016., 11090800., 11131008., 11131624., 11172000.,
      11172448., 11212992., 12677632., 12723776., 12724096., 12770432.,
      12770560., 12817088., 12817024., 12863744., 14184376., 14236208.,
      14236432., 14288480., 14288488., 14340752., 14340544., 14393024.,
      15703648., 15761264., 15761248., 15819104., 15818848., 15876944.,
      15876448., 15934784., 14156648., 14208832., 14208272., 14260672.,
      14259896., 14312512., 14311520., 14364352., 12598528., 12645184.,
      12644224., 12691072., 12689920., 12736960., 12735616., 12782848.,
      11029480., 11070512., 11069296., 11110496., 11109112., 11150480.,
      11148928., 11190464., 9583567.,  9620198.,  9617818.,  9654596.,
      9652069.,  9688994.,  9686320.,  9723392.,  10990416., 11032616.,
      11029392., 11071760., 11068368., 11110904., 11107344., 11150048.,
      12283835., 12331176., 12327494., 12375024., 12371153., 12418872.,
      12414812., 12462720., 13587048., 13639614., 13635348., 13688124.,
      13683648., 13736634., 13731948., 13785144., 12241957., 12289542.,
      12285238., 12333012., 12328519., 12376482., 12371800., 12419952.,
      10888432., 10930952., 10926736., 10969424., 10965040., 11007896.,
      11003344., 11046368., 9526641.,  9564012.,  9560010.,  9597528.,
      9593379.,  9631044.,  9626748.,  9664560.,  8056818.,  8089200.,
      8084916.,  8117424.,  8113014.,  8145648.,  8141112.,  8173872.,
      9236160.,  9273456.,  9268128.,  9305568.,  9300096.,  9337680.,
      9332064.,  9369792.,  10310034., 10351804., 10345836., 10387768.,
      10381638., 10423732., 10417440., 10459696., 11391448., 11437764.,
      11431048., 11477544., 11470648., 11517324., 11510248., 11557104.,
      10258326., 10300232., 10293804., 10335872., 10329282., 10371512.,
      10364760., 10407152., 9118976.,  9156400.,  9150368.,  9187936.,
      9181760.,  9219472.,  9213152.,  9251008.,  7973542.,  8006412.,
      8000884.,  8033880.,  8028226.,  8061348.,  8055568.,  8088816.,
      6486529.,  6513822.,  6508894.,  6536292.,  6531259.,  6558762.,
      6553624.,  6581232.,  7434064.,  7465496.,  7459504.,  7491056.,
      7484944.,  7516616.,  7510384.,  7542176.,  8284573.,  8319692.,
      8313058.,  8348312.,  8341543.,  8376932.,  8370028.,  8405552.,
      9140848.,  9179714.,  9172348.,  9211364.,  9203848.,  9243014.,
      9235348.,  9274664.,  8227355.,  8262502.,  8255570.,  8290852.,
      8283785.,  8319202.,  8312000.,  8347552.,  7309360.,  7340728.,
      7334320.,  7365808.,  7359280.,  7390888.,  7384240.,  7415968.,
      6386983.,  6414512.,  6408718.,  6436352.,  6430453.,  6458192.,
      6452188.,  6480032.};
  const std::array<int, 4> in_shape = {{3, 8, 10, 4}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 512.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, VALID3x8x10x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      283952., 292280., 284528., 292880., 285104., 293480., 285680., 294080.,
      286256., 294680., 286832., 295280., 287408., 295880., 287984., 296480.,
      288560., 297080., 289136., 297680., 289712., 298280., 290288., 298880.,
      290864., 299480., 291440., 300080., 292016., 300680., 292592., 301280.,
      293168., 301880., 293744., 302480., 294320., 303080., 294896., 303680.,
      295472., 304280., 296048., 304880., 296624., 305480., 297200., 306080.,
      297776., 306680., 298352., 307280., 298928., 307880., 299504., 308480.,
      306992., 316280., 307568., 316880., 308144., 317480., 308720., 318080.,
      309296., 318680., 309872., 319280., 310448., 319880., 311024., 320480.,
      311600., 321080., 312176., 321680., 312752., 322280., 313328., 322880.,
      313904., 323480., 314480., 324080., 315056., 324680., 315632., 325280.,
      316208., 325880., 316784., 326480., 317360., 327080., 317936., 327680.,
      318512., 328280., 319088., 328880., 319664., 329480., 320240., 330080.,
      320816., 330680., 321392., 331280., 321968., 331880., 322544., 332480.,
      330032., 340280., 330608., 340880., 331184., 341480., 331760., 342080.,
      332336., 342680., 332912., 343280., 333488., 343880., 334064., 344480.,
      334640., 345080., 335216., 345680., 335792., 346280., 336368., 346880.,
      336944., 347480., 337520., 348080., 338096., 348680., 338672., 349280.,
      339248., 349880., 339824., 350480., 340400., 351080., 340976., 351680.,
      341552., 352280., 342128., 352880., 342704., 353480., 343280., 354080.,
      343856., 354680., 344432., 355280., 345008., 355880., 345584., 356480.,
      353072., 364280., 353648., 364880., 354224., 365480., 354800., 366080.,
      355376., 366680., 355952., 367280., 356528., 367880., 357104., 368480.,
      357680., 369080., 358256., 369680., 358832., 370280., 359408., 370880.,
      359984., 371480., 360560., 372080., 361136., 372680., 361712., 373280.,
      362288., 373880., 362864., 374480., 363440., 375080., 364016., 375680.,
      364592., 376280., 365168., 376880., 365744., 377480., 366320., 378080.,
      366896., 378680., 367472., 379280., 368048., 379880., 368624., 380480.,
      376112., 388280., 376688., 388880., 377264., 389480., 377840., 390080.,
      378416., 390680., 378992., 391280., 379568., 391880., 380144., 392480.,
      380720., 393080., 381296., 393680., 381872., 394280., 382448., 394880.,
      383024., 395480., 383600., 396080., 384176., 396680., 384752., 397280.,
      385328., 397880., 385904., 398480., 386480., 399080., 387056., 399680.,
      387632., 400280., 388208., 400880., 388784., 401480., 389360., 402080.,
      389936., 402680., 390512., 403280., 391088., 403880., 391664., 404480.,
      399152., 412280., 399728., 412880., 400304., 413480., 400880., 414080.,
      401456., 414680., 402032., 415280., 402608., 415880., 403184., 416480.,
      403760., 417080., 404336., 417680., 404912., 418280., 405488., 418880.,
      406064., 419480., 406640., 420080., 407216., 420680., 407792., 421280.,
      408368., 421880., 408944., 422480., 409520., 423080., 410096., 423680.,
      410672., 424280., 411248., 424880., 411824., 425480., 412400., 426080.,
      412976., 426680., 413552., 427280., 414128., 427880., 414704., 428480.,
      422192., 436280., 422768., 436880., 423344., 437480., 423920., 438080.,
      424496., 438680., 425072., 439280., 425648., 439880., 426224., 440480.,
      426800., 441080., 427376., 441680., 427952., 442280., 428528., 442880.,
      429104., 443480., 429680., 444080., 430256., 444680., 430832., 445280.,
      431408., 445880., 431984., 446480., 432560., 447080., 433136., 447680.,
      433712., 448280., 434288., 448880., 434864., 449480., 435440., 450080.,
      436016., 450680., 436592., 451280., 437168., 451880., 437744., 452480.};
  const std::array<int, 4> in_shape = {{3, 8, 10, 4}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, SAME3x8x10x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1274309., 1287722., 1301135., 1314548., 1286478., 1299996., 1313514.,
      1327032., 1298647., 1312270., 1325893., 1339516., 1310816., 1324544.,
      1338272., 1352000., 1480664., 1496160., 1511656., 1527152., 1494624.,
      1510240., 1525856., 1541472., 1508584., 1524320., 1540056., 1555792.,
      1522544., 1538400., 1554256., 1570112., 1688555., 1705938., 1723321.,
      1740704., 1704502., 1722020., 1739538., 1757056., 1720449., 1738102.,
      1755755., 1773408., 1736396., 1754184., 1771972., 1789760., 1898766.,
      1918096., 1937426., 1956756., 1916640., 1936120., 1955600., 1975080.,
      1934514., 1954144., 1973774., 1993404., 1952388., 1972168., 1991948.,
      2011728., 1725963., 1743374., 1760785., 1778196., 1742138., 1759684.,
      1777230., 1794776., 1758313., 1775994., 1793675., 1811356., 1774488.,
      1792304., 1810120., 1827936., 1556440., 1571872., 1587304., 1602736.,
      1570976., 1586528., 1602080., 1617632., 1585512., 1601184., 1616856.,
      1632528., 1600048., 1615840., 1631632., 1647424., 1381221., 1394870.,
      1408519., 1422168., 1393922., 1407676., 1421430., 1435184., 1406623.,
      1420482., 1434341., 1448200., 1419324., 1433288., 1447252., 1461216.,
      1696230., 1711876., 1727522., 1743168., 1711948., 1727720., 1743492.,
      1759264., 1727666., 1743564., 1759462., 1775360., 1743384., 1759408.,
      1775432., 1791456., 1980880., 1998976., 2017072., 2035168., 1998848.,
      2017088., 2035328., 2053568., 2016816., 2035200., 2053584., 2071968.,
      2034784., 2053312., 2071840., 2090368., 2288250., 2308612., 2328974.,
      2349336., 2308652., 2329176., 2349700., 2370224., 2329054., 2349740.,
      2370426., 2391112., 2349456., 2370304., 2391152., 2412000., 2598596.,
      2621296., 2643996., 2666696., 2621360., 2644240., 2667120., 2690000.,
      2644124., 2667184., 2690244., 2713304., 2666888., 2690128., 2713368.,
      2736608., 2382330., 2402828., 2423326., 2443824., 2402852., 2423512.,
      2444172., 2464832., 2423374., 2444196., 2465018., 2485840., 2443896.,
      2464880., 2485864., 2506848., 2168784., 2187008., 2205232., 2223456.,
      2187136., 2205504., 2223872., 2242240., 2205488., 2224000., 2242512.,
      2261024., 2223840., 2242496., 2261152., 2279808., 1928550., 1944684.,
      1960818., 1976952., 1944548., 1960808., 1977068., 1993328., 1960546.,
      1976932., 1993318., 2009704., 1976544., 1993056., 2009568., 2026080.,
      2295015., 2312966., 2330917., 2348868., 2313442., 2331540., 2349638.,
      2367736., 2331869., 2350114., 2368359., 2386604., 2350296., 2368688.,
      2387080., 2405472., 2673096., 2693728., 2714360., 2734992., 2694112.,
      2714912., 2735712., 2756512., 2715128., 2736096., 2757064., 2778032.,
      2736144., 2757280., 2778416., 2799552., 3095145., 3118286., 3141427.,
      3164568., 3118922., 3142252., 3165582., 3188912., 3142699., 3166218.,
      3189737., 3213256., 3166476., 3190184., 3213892., 3237600., 3520890.,
      3546624., 3572358., 3598092., 3547344., 3573288., 3599232., 3625176.,
      3573798., 3599952., 3626106., 3652260., 3600252., 3626616., 3652980.,
      3679344., 3232905., 3256034., 3279163., 3302292., 3256694., 3280012.,
      3303330., 3326648., 3280483., 3303990., 3327497., 3351004., 3304272.,
      3327968., 3351664., 3375360., 2948040., 2968480., 2988920., 3009360.,
      2969248., 2989856., 3010464., 3031072., 2990456., 3011232., 3032008.,
      3052784., 3011664., 3032608., 3053552., 3074496., 2616455., 2634378.,
      2652301., 2670224., 2634910., 2652980., 2671050., 2689120., 2653365.,
      2671582., 2689799., 2708016., 2671820., 2690184., 2708548., 2726912.,
      3067528., 3087600., 3107672., 3127744., 3087824., 3108064., 3128304.,
      3148544., 3108120., 3128528., 3148936., 3169344., 3128416., 3148992.,
      3169568., 3190144., 3576256., 3599360., 3622464., 3645568., 3599360.,
      3622656., 3645952., 3669248., 3622464., 3645952., 3669440., 3692928.,
      3645568., 3669248., 3692928., 3716608., 4149240., 4175216., 4201192.,
      4227168., 4175312., 4201504., 4227696., 4253888., 4201384., 4227792.,
      4254200., 4280608., 4227456., 4254080., 4280704., 4307328., 4725680.,
      4754624., 4783568., 4812512., 4754624., 4783808., 4812992., 4842176.,
      4783568., 4812992., 4842416., 4871840., 4812512., 4842176., 4871840.,
      4901504., 4149240., 4175312., 4201384., 4227456., 4175216., 4201504.,
      4227792., 4254080., 4201192., 4227696., 4254200., 4280704., 4227168.,
      4253888., 4280608., 4307328., 3576256., 3599360., 3622464., 3645568.,
      3599360., 3622656., 3645952., 3669248., 3622464., 3645952., 3669440.,
      3692928., 3645568., 3669248., 3692928., 3716608., 3067528., 3087824.,
      3108120., 3128416., 3087600., 3108064., 3128528., 3148992., 3107672.,
      3128304., 3148936., 3169568., 3127744., 3148544., 3169344., 3190144.,
      2616455., 2634910., 2653365., 2671820., 2634378., 2652980., 2671582.,
      2690184., 2652301., 2671050., 2689799., 2708548., 2670224., 2689120.,
      2708016., 2726912., 2948040., 2969248., 2990456., 3011664., 2968480.,
      2989856., 3011232., 3032608., 2988920., 3010464., 3032008., 3053552.,
      3009360., 3031072., 3052784., 3074496., 3232905., 3256694., 3280483.,
      3304272., 3256034., 3280012., 3303990., 3327968., 3279163., 3303330.,
      3327497., 3351664., 3302292., 3326648., 3351004., 3375360., 3520890.,
      3547344., 3573798., 3600252., 3546624., 3573288., 3599952., 3626616.,
      3572358., 3599232., 3626106., 3652980., 3598092., 3625176., 3652260.,
      3679344., 3095145., 3118922., 3142699., 3166476., 3118286., 3142252.,
      3166218., 3190184., 3141427., 3165582., 3189737., 3213892., 3164568.,
      3188912., 3213256., 3237600., 2673096., 2694112., 2715128., 2736144.,
      2693728., 2714912., 2736096., 2757280., 2714360., 2735712., 2757064.,
      2778416., 2734992., 2756512., 2778032., 2799552., 2295015., 2313442.,
      2331869., 2350296., 2312966., 2331540., 2350114., 2368688., 2330917.,
      2349638., 2368359., 2387080., 2348868., 2367736., 2386604., 2405472.,
      1928550., 1944548., 1960546., 1976544., 1944684., 1960808., 1976932.,
      1993056., 1960818., 1977068., 1993318., 2009568., 1976952., 1993328.,
      2009704., 2026080., 2168784., 2187136., 2205488., 2223840., 2187008.,
      2205504., 2224000., 2242496., 2205232., 2223872., 2242512., 2261152.,
      2223456., 2242240., 2261024., 2279808., 2382330., 2402852., 2423374.,
      2443896., 2402828., 2423512., 2444196., 2464880., 2423326., 2444172.,
      2465018., 2485864., 2443824., 2464832., 2485840., 2506848., 2598596.,
      2621360., 2644124., 2666888., 2621296., 2644240., 2667184., 2690128.,
      2643996., 2667120., 2690244., 2713368., 2666696., 2690000., 2713304.,
      2736608., 2288250., 2308652., 2329054., 2349456., 2308612., 2329176.,
      2349740., 2370304., 2328974., 2349700., 2370426., 2391152., 2349336.,
      2370224., 2391112., 2412000., 1980880., 1998848., 2016816., 2034784.,
      1998976., 2017088., 2035200., 2053312., 2017072., 2035328., 2053584.,
      2071840., 2035168., 2053568., 2071968., 2090368., 1696230., 1711948.,
      1727666., 1743384., 1711876., 1727720., 1743564., 1759408., 1727522.,
      1743492., 1759462., 1775432., 1743168., 1759264., 1775360., 1791456.,
      1381221., 1393922., 1406623., 1419324., 1394870., 1407676., 1420482.,
      1433288., 1408519., 1421430., 1434341., 1447252., 1422168., 1435184.,
      1448200., 1461216., 1556440., 1570976., 1585512., 1600048., 1571872.,
      1586528., 1601184., 1615840., 1587304., 1602080., 1616856., 1631632.,
      1602736., 1617632., 1632528., 1647424., 1725963., 1742138., 1758313.,
      1774488., 1743374., 1759684., 1775994., 1792304., 1760785., 1777230.,
      1793675., 1810120., 1778196., 1794776., 1811356., 1827936., 1898766.,
      1916640., 1934514., 1952388., 1918096., 1936120., 1954144., 1972168.,
      1937426., 1955600., 1973774., 1991948., 1956756., 1975080., 1993404.,
      2011728., 1688555., 1704502., 1720449., 1736396., 1705938., 1722020.,
      1738102., 1754184., 1723321., 1739538., 1755755., 1771972., 1740704.,
      1757056., 1773408., 1789760., 1480664., 1494624., 1508584., 1522544.,
      1496160., 1510240., 1524320., 1538400., 1511656., 1525856., 1540056.,
      1554256., 1527152., 1541472., 1555792., 1570112., 1274309., 1286478.,
      1298647., 1310816., 1287722., 1299996., 1312270., 1324544., 1301135.,
      1313514., 1325893., 1338272., 1314548., 1327032., 1339516., 1352000.};
  const std::array<int, 4> in_shape = {{3, 8, 10, 4}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 256.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, VALID3x8x10x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      559576., 567904., 576232., 584560., 560704., 569056., 577408., 585760.,
      561832., 570208., 578584., 586960., 562960., 571360., 579760., 588160.,
      564088., 572512., 580936., 589360., 565216., 573664., 582112., 590560.,
      566344., 574816., 583288., 591760., 567472., 575968., 584464., 592960.,
      568600., 577120., 585640., 594160., 569728., 578272., 586816., 595360.,
      570856., 579424., 587992., 596560., 571984., 580576., 589168., 597760.,
      573112., 581728., 590344., 598960., 574240., 582880., 591520., 600160.,
      575368., 584032., 592696., 601360., 576496., 585184., 593872., 602560.,
      577624., 586336., 595048., 603760., 578752., 587488., 596224., 604960.,
      579880., 588640., 597400., 606160., 581008., 589792., 598576., 607360.,
      582136., 590944., 599752., 608560., 583264., 592096., 600928., 609760.,
      584392., 593248., 602104., 610960., 585520., 594400., 603280., 612160.,
      586648., 595552., 604456., 613360., 587776., 596704., 605632., 614560.,
      588904., 597856., 606808., 615760., 590032., 599008., 607984., 616960.,
      604696., 613984., 623272., 632560., 605824., 615136., 624448., 633760.,
      606952., 616288., 625624., 634960., 608080., 617440., 626800., 636160.,
      609208., 618592., 627976., 637360., 610336., 619744., 629152., 638560.,
      611464., 620896., 630328., 639760., 612592., 622048., 631504., 640960.,
      613720., 623200., 632680., 642160., 614848., 624352., 633856., 643360.,
      615976., 625504., 635032., 644560., 617104., 626656., 636208., 645760.,
      618232., 627808., 637384., 646960., 619360., 628960., 638560., 648160.,
      620488., 630112., 639736., 649360., 621616., 631264., 640912., 650560.,
      622744., 632416., 642088., 651760., 623872., 633568., 643264., 652960.,
      625000., 634720., 644440., 654160., 626128., 635872., 645616., 655360.,
      627256., 637024., 646792., 656560., 628384., 638176., 647968., 657760.,
      629512., 639328., 649144., 658960., 630640., 640480., 650320., 660160.,
      631768., 641632., 651496., 661360., 632896., 642784., 652672., 662560.,
      634024., 643936., 653848., 663760., 635152., 645088., 655024., 664960.,
      649816., 660064., 670312., 680560., 650944., 661216., 671488., 681760.,
      652072., 662368., 672664., 682960., 653200., 663520., 673840., 684160.,
      654328., 664672., 675016., 685360., 655456., 665824., 676192., 686560.,
      656584., 666976., 677368., 687760., 657712., 668128., 678544., 688960.,
      658840., 669280., 679720., 690160., 659968., 670432., 680896., 691360.,
      661096., 671584., 682072., 692560., 662224., 672736., 683248., 693760.,
      663352., 673888., 684424., 694960., 664480., 675040., 685600., 696160.,
      665608., 676192., 686776., 697360., 666736., 677344., 687952., 698560.,
      667864., 678496., 689128., 699760., 668992., 679648., 690304., 700960.,
      670120., 680800., 691480., 702160., 671248., 681952., 692656., 703360.,
      672376., 683104., 693832., 704560., 673504., 684256., 695008., 705760.,
      674632., 685408., 696184., 706960., 675760., 686560., 697360., 708160.,
      676888., 687712., 698536., 709360., 678016., 688864., 699712., 710560.,
      679144., 690016., 700888., 711760., 680272., 691168., 702064., 712960.,
      694936., 706144., 717352., 728560., 696064., 707296., 718528., 729760.,
      697192., 708448., 719704., 730960., 698320., 709600., 720880., 732160.,
      699448., 710752., 722056., 733360., 700576., 711904., 723232., 734560.,
      701704., 713056., 724408., 735760., 702832., 714208., 725584., 736960.,
      703960., 715360., 726760., 738160., 705088., 716512., 727936., 739360.,
      706216., 717664., 729112., 740560., 707344., 718816., 730288., 741760.,
      708472., 719968., 731464., 742960., 709600., 721120., 732640., 744160.,
      710728., 722272., 733816., 745360., 711856., 723424., 734992., 746560.,
      712984., 724576., 736168., 747760., 714112., 725728., 737344., 748960.,
      715240., 726880., 738520., 750160., 716368., 728032., 739696., 751360.,
      717496., 729184., 740872., 752560., 718624., 730336., 742048., 753760.,
      719752., 731488., 743224., 754960., 720880., 732640., 744400., 756160.,
      722008., 733792., 745576., 757360., 723136., 734944., 746752., 758560.,
      724264., 736096., 747928., 759760., 725392., 737248., 749104., 760960.,
      740056., 752224., 764392., 776560., 741184., 753376., 765568., 777760.,
      742312., 754528., 766744., 778960., 743440., 755680., 767920., 780160.,
      744568., 756832., 769096., 781360., 745696., 757984., 770272., 782560.,
      746824., 759136., 771448., 783760., 747952., 760288., 772624., 784960.,
      749080., 761440., 773800., 786160., 750208., 762592., 774976., 787360.,
      751336., 763744., 776152., 788560., 752464., 764896., 777328., 789760.,
      753592., 766048., 778504., 790960., 754720., 767200., 779680., 792160.,
      755848., 768352., 780856., 793360., 756976., 769504., 782032., 794560.,
      758104., 770656., 783208., 795760., 759232., 771808., 784384., 796960.,
      760360., 772960., 785560., 798160., 761488., 774112., 786736., 799360.,
      762616., 775264., 787912., 800560., 763744., 776416., 789088., 801760.,
      764872., 777568., 790264., 802960., 766000., 778720., 791440., 804160.,
      767128., 779872., 792616., 805360., 768256., 781024., 793792., 806560.,
      769384., 782176., 794968., 807760., 770512., 783328., 796144., 808960.,
      785176., 798304., 811432., 824560., 786304., 799456., 812608., 825760.,
      787432., 800608., 813784., 826960., 788560., 801760., 814960., 828160.,
      789688., 802912., 816136., 829360., 790816., 804064., 817312., 830560.,
      791944., 805216., 818488., 831760., 793072., 806368., 819664., 832960.,
      794200., 807520., 820840., 834160., 795328., 808672., 822016., 835360.,
      796456., 809824., 823192., 836560., 797584., 810976., 824368., 837760.,
      798712., 812128., 825544., 838960., 799840., 813280., 826720., 840160.,
      800968., 814432., 827896., 841360., 802096., 815584., 829072., 842560.,
      803224., 816736., 830248., 843760., 804352., 817888., 831424., 844960.,
      805480., 819040., 832600., 846160., 806608., 820192., 833776., 847360.,
      807736., 821344., 834952., 848560., 808864., 822496., 836128., 849760.,
      809992., 823648., 837304., 850960., 811120., 824800., 838480., 852160.,
      812248., 825952., 839656., 853360., 813376., 827104., 840832., 854560.,
      814504., 828256., 842008., 855760., 815632., 829408., 843184., 856960.,
      830296., 844384., 858472., 872560., 831424., 845536., 859648., 873760.,
      832552., 846688., 860824., 874960., 833680., 847840., 862000., 876160.,
      834808., 848992., 863176., 877360., 835936., 850144., 864352., 878560.,
      837064., 851296., 865528., 879760., 838192., 852448., 866704., 880960.,
      839320., 853600., 867880., 882160., 840448., 854752., 869056., 883360.,
      841576., 855904., 870232., 884560., 842704., 857056., 871408., 885760.,
      843832., 858208., 872584., 886960., 844960., 859360., 873760., 888160.,
      846088., 860512., 874936., 889360., 847216., 861664., 876112., 890560.,
      848344., 862816., 877288., 891760., 849472., 863968., 878464., 892960.,
      850600., 865120., 879640., 894160., 851728., 866272., 880816., 895360.,
      852856., 867424., 881992., 896560., 853984., 868576., 883168., 897760.,
      855112., 869728., 884344., 898960., 856240., 870880., 885520., 900160.,
      857368., 872032., 886696., 901360., 858496., 873184., 887872., 902560.,
      859624., 874336., 889048., 903760., 860752., 875488., 890224., 904960.};
  const std::array<int, 4> in_shape = {{3, 8, 10, 4}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, SAME3x9x8x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1371120., 1646874., 1923096., 2199768., 1926120., 1652058., 1377600.,
      1616580., 1941177., 2266152., 2591484., 2268504., 1945209., 1621620.,
      1864320., 2238072., 2612064., 2986272., 2613408., 2240376., 1867200.,
      2113380., 2536407., 2959488., 3382596., 2959488., 2536407., 2113380.,
      1867200., 2240376., 2613408., 2986272., 2612064., 2238072., 1864320.,
      1621620., 1945209., 2268504., 2591484., 2266152., 1941177., 1616580.,
      1377600., 1652058., 1926120., 2199768., 1923096., 1646874., 1371120.};
  const std::array<int, 4> in_shape = {{3, 9, 8, 1}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, VALID3x9x8x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      19317., 19488., 19659., 19830., 20001., 20172., 20343., 20685., 20856.,
      21027., 21198., 21369., 21540., 21711., 22053., 22224., 22395., 22566.,
      22737., 22908., 23079., 23421., 23592., 23763., 23934., 24105., 24276.,
      24447., 24789., 24960., 25131., 25302., 25473., 25644., 25815., 26157.,
      26328., 26499., 26670., 26841., 27012., 27183., 27525., 27696., 27867.,
      28038., 28209., 28380., 28551.};
  const std::array<int, 4> in_shape = {{3, 9, 8, 1}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, SAME3x9x8x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      2733690., 2742240., 3283434., 3293748., 3834096., 3846192., 4385640.,
      4399536., 3840018., 3852240., 3293586., 3304116., 2746380., 2755200.,
      3222765., 3233160., 3869817., 3882354., 4517604., 4532304., 5166084.,
      5182968., 4522161., 4537008., 3877629., 3890418., 3232530., 3243240.,
      3716280., 3728640., 4461240., 4476144., 5206656., 5224128., 5952480.,
      5972544., 5209176., 5226816., 4465560., 4480752., 3721680., 3734400.,
      4212315., 4226760., 5055399., 5072814., 5898564., 5918976., 6741756.,
      6765192., 5898375., 5918976., 5055075., 5072814., 4211910., 4226760.,
      3721080., 3734400., 4464696., 4480752., 5208000., 5226816., 5950944.,
      5972544., 5205144., 5224128., 4459800., 4476144., 3714960., 3728640.,
      3231165., 3243240., 3875865., 3890418., 4519956., 4537008., 5163396.,
      5182968., 4515105., 4532304., 3867549., 3882354., 3220770., 3233160.,
      2744490., 2755200., 3291210., 3304116., 3837120., 3852240., 4382184.,
      4399536., 3830946., 3846192., 3280626., 3293748., 2731260., 2742240.};
  const std::array<int, 4> in_shape = {{3, 9, 8, 1}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, VALID3x9x8x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      37167., 38634., 37491., 38976., 37815., 39318., 38139., 39660., 38463.,
      40002., 38787., 40344., 39111., 40686., 39759., 41370., 40083., 41712.,
      40407., 42054., 40731., 42396., 41055., 42738., 41379., 43080., 41703.,
      43422., 42351., 44106., 42675., 44448., 42999., 44790., 43323., 45132.,
      43647., 45474., 43971., 45816., 44295., 46158., 44943., 46842., 45267.,
      47184., 45591., 47526., 45915., 47868., 46239., 48210., 46563., 48552.,
      46887., 48894., 47535., 49578., 47859., 49920., 48183., 50262., 48507.,
      50604., 48831., 50946., 49155., 51288., 49479., 51630., 50127., 52314.,
      50451., 52656., 50775., 52998., 51099., 53340., 51423., 53682., 51747.,
      54024., 52071., 54366., 52719., 55050., 53043., 55392., 53367., 55734.,
      53691., 56076., 54015., 56418., 54339., 56760., 54663., 57102.};
  const std::array<int, 4> in_shape = {{3, 9, 8, 1}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, SAME3x9x8x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5458830.,  5467380.,  5475930.,  5484480.,  6556554.,  6566868.,
      6577182.,  6587496.,  7656096.,  7668192.,  7680288.,  7692384.,
      8757384.,  8771280.,  8785176.,  8799072.,  7667814.,  7680036.,
      7692258.,  7704480.,  6576642.,  6587172.,  6597702.,  6608232.,
      5483940.,  5492760.,  5501580.,  5510400.,  6435135.,  6445530.,
      6455925.,  6466320.,  7727097.,  7739634.,  7752171.,  7764708.,
      9020508.,  9035208.,  9049908.,  9064608.,  10315284., 10332168.,
      10349052., 10365936., 9029475.,  9044322.,  9059169.,  9074016.,
      7742469.,  7755258.,  7768047.,  7780836.,  6454350.,  6465060.,
      6475770.,  6486480.,  7420200.,  7432560.,  7444920.,  7457280.,
      8907576.,  8922480.,  8937384.,  8952288.,  10395840., 10413312.,
      10430784., 10448256., 11884896., 11904960., 11925024., 11945088.,
      10400712., 10418352., 10435992., 10453632., 8915928.,  8931120.,
      8946312.,  8961504.,  7430640.,  7443360.,  7456080.,  7468800.,
      8410185.,  8424630.,  8439075.,  8453520.,  10093383., 10110798.,
      10128213., 10145628., 11776716., 11797128., 11817540., 11837952.,
      13460076., 13483512., 13506948., 13530384., 11776149., 11796750.,
      11817351., 11837952., 10092411., 10110150., 10127889., 10145628.,
      8408970.,  8423820.,  8438670.,  8453520.,  7428840.,  7442160.,
      7455480.,  7468800.,  8913336.,  8929392.,  8945448.,  8961504.,
      10397184., 10416000., 10434816., 10453632., 11880288., 11901888.,
      11923488., 11945088., 10391304., 10410288., 10429272., 10448256.,
      8903256.,  8919600.,  8935944.,  8952288.,  7416240.,  7429920.,
      7443600.,  7457280.,  6450255.,  6462330.,  6474405.,  6486480.,
      7737177.,  7751730.,  7766283.,  7780836.,  9022860.,  9039912.,
      9056964.,  9074016.,  10307220., 10326792., 10346364., 10365936.,
      9013011.,  9030210.,  9047409.,  9064608.,  7720293.,  7735098.,
      7749903.,  7764708.,  6429150.,  6441540.,  6453930.,  6466320.,
      5478270.,  5488980.,  5499690.,  5510400.,  6569514.,  6582420.,
      6595326.,  6608232.,  7659120.,  7674240.,  7689360.,  7704480.,
      8747016.,  8764368.,  8781720.,  8799072.,  7646646.,  7661892.,
      7677138.,  7692384.,  6548130.,  6561252.,  6574374.,  6587496.,
      5451540.,  5462520.,  5473500.,  5484480.};
  const std::array<int, 4> in_shape = {{3, 9, 8, 1}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, VALID3x9x8x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      72867.,  74334.,  75801.,  77268.,  73497.,  74982.,  76467.,  77952.,
      74127.,  75630.,  77133.,  78636.,  74757.,  76278.,  77799.,  79320.,
      75387.,  76926.,  78465.,  80004.,  76017.,  77574.,  79131.,  80688.,
      76647.,  78222.,  79797.,  81372.,  77907.,  79518.,  81129.,  82740.,
      78537.,  80166.,  81795.,  83424.,  79167.,  80814.,  82461.,  84108.,
      79797.,  81462.,  83127.,  84792.,  80427.,  82110.,  83793.,  85476.,
      81057.,  82758.,  84459.,  86160.,  81687.,  83406.,  85125.,  86844.,
      82947.,  84702.,  86457.,  88212.,  83577.,  85350.,  87123.,  88896.,
      84207.,  85998.,  87789.,  89580.,  84837.,  86646.,  88455.,  90264.,
      85467.,  87294.,  89121.,  90948.,  86097.,  87942.,  89787.,  91632.,
      86727.,  88590.,  90453.,  92316.,  87987.,  89886.,  91785.,  93684.,
      88617.,  90534.,  92451.,  94368.,  89247.,  91182.,  93117.,  95052.,
      89877.,  91830.,  93783.,  95736.,  90507.,  92478.,  94449.,  96420.,
      91137.,  93126.,  95115.,  97104.,  91767.,  93774.,  95781.,  97788.,
      93027.,  95070.,  97113.,  99156.,  93657.,  95718.,  97779.,  99840.,
      94287.,  96366.,  98445.,  100524., 94917.,  97014.,  99111.,  101208.,
      95547.,  97662.,  99777.,  101892., 96177.,  98310.,  100443., 102576.,
      96807.,  98958.,  101109., 103260., 98067.,  100254., 102441., 104628.,
      98697.,  100902., 103107., 105312., 99327.,  101550., 103773., 105996.,
      99957.,  102198., 104439., 106680., 100587., 102846., 105105., 107364.,
      101217., 103494., 105771., 108048., 101847., 104142., 106437., 108732.,
      103107., 105438., 107769., 110100., 103737., 106086., 108435., 110784.,
      104367., 106734., 109101., 111468., 104997., 107382., 109767., 112152.,
      105627., 108030., 110433., 112836., 106257., 108678., 111099., 113520.,
      106887., 109326., 111765., 114204.};
  const std::array<int, 4> in_shape = {{3, 9, 8, 1}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, SAME3x9x8x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      2731260., 2742240., 3280626., 3293748., 3830946., 3846192., 4382184.,
      4399536., 3837120., 3852240., 3291210., 3304116., 2744490., 2755200.,
      3220770., 3233160., 3867549., 3882354., 4515105., 4532304., 5163396.,
      5182968., 4519956., 4537008., 3875865., 3890418., 3231165., 3243240.,
      3714960., 3728640., 4459800., 4476144., 5205144., 5224128., 5950944.,
      5972544., 5208000., 5226816., 4464696., 4480752., 3721080., 3734400.,
      4211910., 4226760., 5055075., 5072814., 5898375., 5918976., 6741756.,
      6765192., 5898564., 5918976., 5055399., 5072814., 4212315., 4226760.,
      3721680., 3734400., 4465560., 4480752., 5209176., 5226816., 5952480.,
      5972544., 5206656., 5224128., 4461240., 4476144., 3716280., 3728640.,
      3232530., 3243240., 3877629., 3890418., 4522161., 4537008., 5166084.,
      5182968., 4517604., 4532304., 3869817., 3882354., 3222765., 3233160.,
      2746380., 2755200., 3293586., 3304116., 3840018., 3852240., 4385640.,
      4399536., 3834096., 3846192., 3283434., 3293748., 2733690., 2742240.};
  const std::array<int, 4> in_shape = {{3, 9, 8, 2}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, VALID3x9x8x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      38463., 38634., 38805., 38976., 39147., 39318., 39489., 39660., 39831.,
      40002., 40173., 40344., 40515., 40686., 41199., 41370., 41541., 41712.,
      41883., 42054., 42225., 42396., 42567., 42738., 42909., 43080., 43251.,
      43422., 43935., 44106., 44277., 44448., 44619., 44790., 44961., 45132.,
      45303., 45474., 45645., 45816., 45987., 46158., 46671., 46842., 47013.,
      47184., 47355., 47526., 47697., 47868., 48039., 48210., 48381., 48552.,
      48723., 48894., 49407., 49578., 49749., 49920., 50091., 50262., 50433.,
      50604., 50775., 50946., 51117., 51288., 51459., 51630., 52143., 52314.,
      52485., 52656., 52827., 52998., 53169., 53340., 53511., 53682., 53853.,
      54024., 54195., 54366., 54879., 55050., 55221., 55392., 55563., 55734.,
      55905., 56076., 56247., 56418., 56589., 56760., 56931., 57102.};
  const std::array<int, 4> in_shape = {{3, 9, 8, 2}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, SAME3x9x8x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5445510.,  5462520.,  5467380.,  5484480.,  6540732.,  6561252.,
      6566868.,  6587496.,  7637826.,  7661892.,  7668192.,  7692384.,
      8736720.,  8764368.,  8771280.,  8799072.,  7649922.,  7674240.,
      7680036.,  7704480.,  6561468.,  6582420.,  6587172.,  6608232.,
      5471430.,  5488980.,  5492760.,  5510400.,  6420855.,  6441540.,
      6445530.,  6466320.,  7710150.,  7735098.,  7739634.,  7764708.,
      9000957.,  9030210.,  9035208.,  9064608.,  10293192., 10326792.,
      10332168., 10365936., 9010365.,  9039912.,  9044322.,  9074016.,
      7726278.,  7751730.,  7755258.,  7780836.,  6441015.,  6462330.,
      6465060.,  6486480.,  7405320.,  7429920.,  7432560.,  7457280.,
      8889936.,  8919600.,  8922480.,  8952288.,  10375512., 10410288.,
      10413312., 10448256., 11861952., 11901888., 11904960., 11945088.,
      10380888., 10416000., 10418352., 10453632., 8899152.,  8929392.,
      8931120.,  8961504.,  7416840.,  7442160.,  7443360.,  7468800.,
      8395065.,  8423820.,  8424630.,  8453520.,  10075482., 10110150.,
      10110798., 10145628., 11756115., 11796750., 11797128., 11837952.,
      13436856., 13483512., 13483512., 13530384., 11756115., 11797128.,
      11796750., 11837952., 10075482., 10110798., 10110150., 10145628.,
      8395065.,  8424630.,  8423820.,  8453520.,  7416840.,  7443360.,
      7442160.,  7468800.,  8899152.,  8931120.,  8929392.,  8961504.,
      10380888., 10418352., 10416000., 10453632., 11861952., 11904960.,
      11901888., 11945088., 10375512., 10413312., 10410288., 10448256.,
      8889936.,  8922480.,  8919600.,  8952288.,  7405320.,  7432560.,
      7429920.,  7457280.,  6441015.,  6465060.,  6462330.,  6486480.,
      7726278.,  7755258.,  7751730.,  7780836.,  9010365.,  9044322.,
      9039912.,  9074016.,  10293192., 10332168., 10326792., 10365936.,
      9000957.,  9035208.,  9030210.,  9064608.,  7710150.,  7739634.,
      7735098.,  7764708.,  6420855.,  6445530.,  6441540.,  6466320.,
      5471430.,  5492760.,  5488980.,  5510400.,  6561468.,  6587172.,
      6582420.,  6608232.,  7649922.,  7680036.,  7674240.,  7704480.,
      8736720.,  8771280.,  8764368.,  8799072.,  7637826.,  7668192.,
      7661892.,  7692384.,  6540732.,  6566868.,  6561252.,  6587496.,
      5445510.,  5467380.,  5462520.,  5484480.};
  const std::array<int, 4> in_shape = {{3, 9, 8, 2}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, VALID3x9x8x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      74010.,  76926.,  74334.,  77268.,  74658.,  77610.,  74982.,  77952.,
      75306.,  78294.,  75630.,  78636.,  75954.,  78978.,  76278.,  79320.,
      76602.,  79662.,  76926.,  80004.,  77250.,  80346.,  77574.,  80688.,
      77898.,  81030.,  78222.,  81372.,  79194.,  82398.,  79518.,  82740.,
      79842.,  83082.,  80166.,  83424.,  80490.,  83766.,  80814.,  84108.,
      81138.,  84450.,  81462.,  84792.,  81786.,  85134.,  82110.,  85476.,
      82434.,  85818.,  82758.,  86160.,  83082.,  86502.,  83406.,  86844.,
      84378.,  87870.,  84702.,  88212.,  85026.,  88554.,  85350.,  88896.,
      85674.,  89238.,  85998.,  89580.,  86322.,  89922.,  86646.,  90264.,
      86970.,  90606.,  87294.,  90948.,  87618.,  91290.,  87942.,  91632.,
      88266.,  91974.,  88590.,  92316.,  89562.,  93342.,  89886.,  93684.,
      90210.,  94026.,  90534.,  94368.,  90858.,  94710.,  91182.,  95052.,
      91506.,  95394.,  91830.,  95736.,  92154.,  96078.,  92478.,  96420.,
      92802.,  96762.,  93126.,  97104.,  93450.,  97446.,  93774.,  97788.,
      94746.,  98814.,  95070.,  99156.,  95394.,  99498.,  95718.,  99840.,
      96042.,  100182., 96366.,  100524., 96690.,  100866., 97014.,  101208.,
      97338.,  101550., 97662.,  101892., 97986.,  102234., 98310.,  102576.,
      98634.,  102918., 98958.,  103260., 99930.,  104286., 100254., 104628.,
      100578., 104970., 100902., 105312., 101226., 105654., 101550., 105996.,
      101874., 106338., 102198., 106680., 102522., 107022., 102846., 107364.,
      103170., 107706., 103494., 108048., 103818., 108390., 104142., 108732.,
      105114., 109758., 105438., 110100., 105762., 110442., 106086., 110784.,
      106410., 111126., 106734., 111468., 107058., 111810., 107382., 112152.,
      107706., 112494., 108030., 112836., 108354., 113178., 108678., 113520.,
      109002., 113862., 109326., 114204.};
  const std::array<int, 4> in_shape = {{3, 9, 8, 2}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, SAME3x9x8x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      4627610.,  4644620.,  4661630.,  4678640.,  4650780.,  4667880.,
      4684980.,  4702080.,  5540688.,  5561208.,  5581728.,  5602248.,
      5568276.,  5588904.,  5609532.,  5630160.,  6449282.,  6473348.,
      6497414.,  6521480.,  6481216.,  6505408.,  6529600.,  6553792.,
      7353248.,  7380896.,  7408544.,  7436192.,  7389456.,  7417248.,
      7445040.,  7472832.,  6415878.,  6440196.,  6464514.,  6488832.,
      6447308.,  6471752.,  6496196.,  6520640.,  5483424.,  5504376.,
      5525328.,  5546280.,  5510148.,  5531208.,  5552268.,  5573328.,
      4556030.,  4573580.,  4591130.,  4608680.,  4578120.,  4595760.,
      4613400.,  4631040.,  5496865.,  5517550.,  5538235.,  5558920.,
      5523070.,  5543860.,  5564650.,  5585440.,  6578712.,  6603660.,
      6628608.,  6653556.,  6609906.,  6634980.,  6660054.,  6685128.,
      7654325.,  7683578.,  7712831.,  7742084.,  7690424.,  7719824.,
      7749224.,  7778624.,  8723536.,  8757136.,  8790736.,  8824336.,
      8764456.,  8798224.,  8831992.,  8865760.,  7608335.,  7637882.,
      7667429.,  7696976.,  7643846.,  7673540.,  7703234.,  7732928.,
      6499872.,  6525324.,  6550776.,  6576228.,  6530058.,  6555636.,
      6581214.,  6606792.,  5398315.,  5419630.,  5440945.,  5462260.,
      5423260.,  5444680.,  5466100.,  5487520.,  6343160.,  6367760.,
      6392360.,  6416960.,  6371920.,  6396640.,  6421360.,  6446080.,
      7588032.,  7617696.,  7647360.,  7677024.,  7622256.,  7652064.,
      7681872.,  7711680.,  8824536.,  8859312.,  8894088.,  8928864.,
      8864128.,  8899072.,  8934016.,  8968960.,  10052480., 10092416.,
      10132352., 10172288., 10097344., 10137472., 10177600., 10217728.,
      8763272.,  8798384.,  8833496.,  8868608.,  8802192.,  8837472.,
      8872752.,  8908032.,  7483008.,  7513248.,  7543488.,  7573728.,
      7516080.,  7546464.,  7576848.,  7607232.,  6211880.,  6237200.,
      6262520.,  6287840.,  6239200.,  6264640.,  6290080.,  6315520.,
      7158815.,  7187570.,  7216325.,  7245080.,  7189650.,  7218540.,
      7247430.,  7276320.,  8559432.,  8594100.,  8628768.,  8663436.,
      8596110.,  8630940.,  8665770.,  8700600.,  9949163.,  9989798.,
      10030433., 10071068., 9991576.,  10032400., 10073224., 10114048.,
      11327792., 11374448., 11421104., 11467760., 11375832., 11422704.,
      11469576., 11516448., 9869937.,  9910950.,  9951963.,  9992976.,
      9911594.,  9952796.,  9993998.,  10035200., 8423616.,  8458932.,
      8494248.,  8529564.,  8458998.,  8494476.,  8529954.,  8565432.,
      6989045.,  7018610.,  7048175.,  7077740.,  7018260.,  7047960.,
      7077660.,  7107360.,  6622840.,  6649360.,  6675880.,  6702400.,
      6650320.,  6676960.,  6703600.,  6730240.,  7917504.,  7949472.,
      7981440.,  8013408.,  7950192.,  7982304.,  8014416.,  8046528.,
      9201752.,  9239216.,  9276680.,  9314144.,  9239552.,  9277184.,
      9314816.,  9352448.,  10475392., 10518400., 10561408., 10604416.,
      10518208., 10561408., 10604608., 10647808., 9126152.,  9163952.,
      9201752.,  9239552.,  9163280.,  9201248.,  9239216.,  9277184.,
      7787904.,  7820448.,  7852992.,  7885536.,  7819440.,  7852128.,
      7884816.,  7917504.,  6460840.,  6488080.,  6515320.,  6542560.,
      6486880.,  6514240.,  6541600.,  6568960.,  6173825.,  6197870.,
      6221915.,  6245960.,  6198430.,  6222580.,  6246730.,  6270880.,
      7381080.,  7410060.,  7439040.,  7468020.,  7410354.,  7439460.,
      7468566.,  7497672.,  8578773.,  8612730.,  8646687.,  8680644.,
      8612632.,  8646736.,  8680840.,  8714944.,  9766736.,  9805712.,
      9844688.,  9883664.,  9805096.,  9844240.,  9883384.,  9922528.,
      8509487.,  8543738.,  8577989.,  8612240.,  8542758.,  8577156.,
      8611554.,  8645952.,  7262304.,  7291788.,  7321272.,  7350756.,
      7290570.,  7320180.,  7349790.,  7379400.,  6025355.,  6050030.,
      6074705.,  6099380.,  6048700.,  6073480.,  6098260.,  6123040.,
      5069370.,  5090700.,  5112030.,  5133360.,  5089020.,  5110440.,
      5131860.,  5153280.,  6056208.,  6081912.,  6107616.,  6133320.,
      6079572.,  6105384.,  6131196.,  6157008.,  7033698.,  7063812.,
      7093926.,  7124040.,  7060704.,  7090944.,  7121184.,  7151424.,
      8001696.,  8036256.,  8070816.,  8105376.,  8032272.,  8066976.,
      8101680.,  8136384.,  6966246.,  6996612.,  7026978.,  7057344.,
      6992748.,  7023240.,  7053732.,  7084224.,  5940576.,  5966712.,
      5992848.,  6018984.,  5963076.,  5989320.,  6015564.,  6041808.,
      4924830.,  4946700.,  4968570.,  4990440.,  4943400.,  4965360.,
      4987320.,  5009280.};
  const std::array<int, 4> in_shape = {{3, 9, 8, 2}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 512.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, VALID3x9x8x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      145104., 148020., 150936., 153852., 145734., 148668., 151602., 154536.,
      146364., 149316., 152268., 155220., 146994., 149964., 152934., 155904.,
      147624., 150612., 153600., 156588., 148254., 151260., 154266., 157272.,
      148884., 151908., 154932., 157956., 149514., 152556., 155598., 158640.,
      150144., 153204., 156264., 159324., 150774., 153852., 156930., 160008.,
      151404., 154500., 157596., 160692., 152034., 155148., 158262., 161376.,
      152664., 155796., 158928., 162060., 153294., 156444., 159594., 162744.,
      155184., 158388., 161592., 164796., 155814., 159036., 162258., 165480.,
      156444., 159684., 162924., 166164., 157074., 160332., 163590., 166848.,
      157704., 160980., 164256., 167532., 158334., 161628., 164922., 168216.,
      158964., 162276., 165588., 168900., 159594., 162924., 166254., 169584.,
      160224., 163572., 166920., 170268., 160854., 164220., 167586., 170952.,
      161484., 164868., 168252., 171636., 162114., 165516., 168918., 172320.,
      162744., 166164., 169584., 173004., 163374., 166812., 170250., 173688.,
      165264., 168756., 172248., 175740., 165894., 169404., 172914., 176424.,
      166524., 170052., 173580., 177108., 167154., 170700., 174246., 177792.,
      167784., 171348., 174912., 178476., 168414., 171996., 175578., 179160.,
      169044., 172644., 176244., 179844., 169674., 173292., 176910., 180528.,
      170304., 173940., 177576., 181212., 170934., 174588., 178242., 181896.,
      171564., 175236., 178908., 182580., 172194., 175884., 179574., 183264.,
      172824., 176532., 180240., 183948., 173454., 177180., 180906., 184632.,
      175344., 179124., 182904., 186684., 175974., 179772., 183570., 187368.,
      176604., 180420., 184236., 188052., 177234., 181068., 184902., 188736.,
      177864., 181716., 185568., 189420., 178494., 182364., 186234., 190104.,
      179124., 183012., 186900., 190788., 179754., 183660., 187566., 191472.,
      180384., 184308., 188232., 192156., 181014., 184956., 188898., 192840.,
      181644., 185604., 189564., 193524., 182274., 186252., 190230., 194208.,
      182904., 186900., 190896., 194892., 183534., 187548., 191562., 195576.,
      185424., 189492., 193560., 197628., 186054., 190140., 194226., 198312.,
      186684., 190788., 194892., 198996., 187314., 191436., 195558., 199680.,
      187944., 192084., 196224., 200364., 188574., 192732., 196890., 201048.,
      189204., 193380., 197556., 201732., 189834., 194028., 198222., 202416.,
      190464., 194676., 198888., 203100., 191094., 195324., 199554., 203784.,
      191724., 195972., 200220., 204468., 192354., 196620., 200886., 205152.,
      192984., 197268., 201552., 205836., 193614., 197916., 202218., 206520.,
      195504., 199860., 204216., 208572., 196134., 200508., 204882., 209256.,
      196764., 201156., 205548., 209940., 197394., 201804., 206214., 210624.,
      198024., 202452., 206880., 211308., 198654., 203100., 207546., 211992.,
      199284., 203748., 208212., 212676., 199914., 204396., 208878., 213360.,
      200544., 205044., 209544., 214044., 201174., 205692., 210210., 214728.,
      201804., 206340., 210876., 215412., 202434., 206988., 211542., 216096.,
      203064., 207636., 212208., 216780., 203694., 208284., 212874., 217464.,
      205584., 210228., 214872., 219516., 206214., 210876., 215538., 220200.,
      206844., 211524., 216204., 220884., 207474., 212172., 216870., 221568.,
      208104., 212820., 217536., 222252., 208734., 213468., 218202., 222936.,
      209364., 214116., 218868., 223620., 209994., 214764., 219534., 224304.,
      210624., 215412., 220200., 224988., 211254., 216060., 220866., 225672.,
      211884., 216708., 221532., 226356., 212514., 217356., 222198., 227040.,
      213144., 218004., 222864., 227724., 213774., 218652., 223530., 228408.};
  const std::array<int, 4> in_shape = {{3, 9, 8, 2}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, SAME3x9x8x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5451540.,  5462520.,  5473500.,  5484480.,  6548130.,  6561252.,
      6574374.,  6587496.,  7646646.,  7661892.,  7677138.,  7692384.,
      8747016.,  8764368.,  8781720.,  8799072.,  7659120.,  7674240.,
      7689360.,  7704480.,  6569514.,  6582420.,  6595326.,  6608232.,
      5478270.,  5488980.,  5499690.,  5510400.,  6429150.,  6441540.,
      6453930.,  6466320.,  7720293.,  7735098.,  7749903.,  7764708.,
      9013011.,  9030210.,  9047409.,  9064608.,  10307220., 10326792.,
      10346364., 10365936., 9022860.,  9039912.,  9056964.,  9074016.,
      7737177.,  7751730.,  7766283.,  7780836.,  6450255.,  6462330.,
      6474405.,  6486480.,  7416240.,  7429920.,  7443600.,  7457280.,
      8903256.,  8919600.,  8935944.,  8952288.,  10391304., 10410288.,
      10429272., 10448256., 11880288., 11901888., 11923488., 11945088.,
      10397184., 10416000., 10434816., 10453632., 8913336.,  8929392.,
      8945448.,  8961504.,  7428840.,  7442160.,  7455480.,  7468800.,
      8408970.,  8423820.,  8438670.,  8453520.,  10092411., 10110150.,
      10127889., 10145628., 11776149., 11796750., 11817351., 11837952.,
      13460076., 13483512., 13506948., 13530384., 11776716., 11797128.,
      11817540., 11837952., 10093383., 10110798., 10128213., 10145628.,
      8410185.,  8424630.,  8439075.,  8453520.,  7430640.,  7443360.,
      7456080.,  7468800.,  8915928.,  8931120.,  8946312.,  8961504.,
      10400712., 10418352., 10435992., 10453632., 11884896., 11904960.,
      11925024., 11945088., 10395840., 10413312., 10430784., 10448256.,
      8907576.,  8922480.,  8937384.,  8952288.,  7420200.,  7432560.,
      7444920.,  7457280.,  6454350.,  6465060.,  6475770.,  6486480.,
      7742469.,  7755258.,  7768047.,  7780836.,  9029475.,  9044322.,
      9059169.,  9074016.,  10315284., 10332168., 10349052., 10365936.,
      9020508.,  9035208.,  9049908.,  9064608.,  7727097.,  7739634.,
      7752171.,  7764708.,  6435135.,  6445530.,  6455925.,  6466320.,
      5483940.,  5492760.,  5501580.,  5510400.,  6576642.,  6587172.,
      6597702.,  6608232.,  7667814.,  7680036.,  7692258.,  7704480.,
      8757384.,  8771280.,  8785176.,  8799072.,  7656096.,  7668192.,
      7680288.,  7692384.,  6556554.,  6566868.,  6577182.,  6587496.,
      5458830.,  5467380.,  5475930.,  5484480.};
  const std::array<int, 4> in_shape = {{3, 9, 8, 4}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, VALID3x9x8x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      76755.,  76926.,  77097.,  77268.,  77439.,  77610.,  77781.,  77952.,
      78123.,  78294.,  78465.,  78636.,  78807.,  78978.,  79149.,  79320.,
      79491.,  79662.,  79833.,  80004.,  80175.,  80346.,  80517.,  80688.,
      80859.,  81030.,  81201.,  81372.,  82227.,  82398.,  82569.,  82740.,
      82911.,  83082.,  83253.,  83424.,  83595.,  83766.,  83937.,  84108.,
      84279.,  84450.,  84621.,  84792.,  84963.,  85134.,  85305.,  85476.,
      85647.,  85818.,  85989.,  86160.,  86331.,  86502.,  86673.,  86844.,
      87699.,  87870.,  88041.,  88212.,  88383.,  88554.,  88725.,  88896.,
      89067.,  89238.,  89409.,  89580.,  89751.,  89922.,  90093.,  90264.,
      90435.,  90606.,  90777.,  90948.,  91119.,  91290.,  91461.,  91632.,
      91803.,  91974.,  92145.,  92316.,  93171.,  93342.,  93513.,  93684.,
      93855.,  94026.,  94197.,  94368.,  94539.,  94710.,  94881.,  95052.,
      95223.,  95394.,  95565.,  95736.,  95907.,  96078.,  96249.,  96420.,
      96591.,  96762.,  96933.,  97104.,  97275.,  97446.,  97617.,  97788.,
      98643.,  98814.,  98985.,  99156.,  99327.,  99498.,  99669.,  99840.,
      100011., 100182., 100353., 100524., 100695., 100866., 101037., 101208.,
      101379., 101550., 101721., 101892., 102063., 102234., 102405., 102576.,
      102747., 102918., 103089., 103260., 104115., 104286., 104457., 104628.,
      104799., 104970., 105141., 105312., 105483., 105654., 105825., 105996.,
      106167., 106338., 106509., 106680., 106851., 107022., 107193., 107364.,
      107535., 107706., 107877., 108048., 108219., 108390., 108561., 108732.,
      109587., 109758., 109929., 110100., 110271., 110442., 110613., 110784.,
      110955., 111126., 111297., 111468., 111639., 111810., 111981., 112152.,
      112323., 112494., 112665., 112836., 113007., 113178., 113349., 113520.,
      113691., 113862., 114033., 114204.};
  const std::array<int, 4> in_shape = {{3, 9, 8, 4}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, SAME3x9x8x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      4924830.,  4943400.,  4946700.,  4965360.,  4968570.,  4987320.,
      4990440.,  5009280.,  5940576.,  5963076.,  5966712.,  5989320.,
      5992848.,  6015564.,  6018984.,  6041808.,  6966246.,  6992748.,
      6996612.,  7023240.,  7026978.,  7053732.,  7057344.,  7084224.,
      8001696.,  8032272.,  8036256.,  8066976.,  8070816.,  8101680.,
      8105376.,  8136384.,  7033698.,  7060704.,  7063812.,  7090944.,
      7093926.,  7121184.,  7124040.,  7151424.,  6056208.,  6079572.,
      6081912.,  6105384.,  6107616.,  6131196.,  6133320.,  6157008.,
      5069370.,  5089020.,  5090700.,  5110440.,  5112030.,  5131860.,
      5133360.,  5153280.,  6025355.,  6048700.,  6050030.,  6073480.,
      6074705.,  6098260.,  6099380.,  6123040.,  7262304.,  7290570.,
      7291788.,  7320180.,  7321272.,  7349790.,  7350756.,  7379400.,
      8509487.,  8542758.,  8543738.,  8577156.,  8577989.,  8611554.,
      8612240.,  8645952.,  9766736.,  9805096.,  9805712.,  9844240.,
      9844688.,  9883384.,  9883664.,  9922528.,  8578773.,  8612632.,
      8612730.,  8646736.,  8646687.,  8680840.,  8680644.,  8714944.,
      7381080.,  7410354.,  7410060.,  7439460.,  7439040.,  7468566.,
      7468020.,  7497672.,  6173825.,  6198430.,  6197870.,  6222580.,
      6221915.,  6246730.,  6245960.,  6270880.,  6460840.,  6486880.,
      6488080.,  6514240.,  6515320.,  6541600.,  6542560.,  6568960.,
      7787904.,  7819440.,  7820448.,  7852128.,  7852992.,  7884816.,
      7885536.,  7917504.,  9126152.,  9163280.,  9163952.,  9201248.,
      9201752.,  9239216.,  9239552.,  9277184.,  10475392., 10518208.,
      10518400., 10561408., 10561408., 10604608., 10604416., 10647808.,
      9201752.,  9239552.,  9239216.,  9277184.,  9276680.,  9314816.,
      9314144.,  9352448.,  7917504.,  7950192.,  7949472.,  7982304.,
      7981440.,  8014416.,  8013408.,  8046528.,  6622840.,  6650320.,
      6649360.,  6676960.,  6675880.,  6703600.,  6702400.,  6730240.,
      6989045.,  7018260.,  7018610.,  7047960.,  7048175.,  7077660.,
      7077740.,  7107360.,  8423616.,  8458998.,  8458932.,  8494476.,
      8494248.,  8529954.,  8529564.,  8565432.,  9869937.,  9911594.,
      9910950.,  9952796.,  9951963.,  9993998.,  9992976.,  10035200.,
      11327792., 11375832., 11374448., 11422704., 11421104., 11469576.,
      11467760., 11516448., 9949163.,  9991576.,  9989798.,  10032400.,
      10030433., 10073224., 10071068., 10114048., 8559432.,  8596110.,
      8594100.,  8630940.,  8628768.,  8665770.,  8663436.,  8700600.,
      7158815.,  7189650.,  7187570.,  7218540.,  7216325.,  7247430.,
      7245080.,  7276320.,  6211880.,  6239200.,  6237200.,  6264640.,
      6262520.,  6290080.,  6287840.,  6315520.,  7483008.,  7516080.,
      7513248.,  7546464.,  7543488.,  7576848.,  7573728.,  7607232.,
      8763272.,  8802192.,  8798384.,  8837472.,  8833496.,  8872752.,
      8868608.,  8908032.,  10052480., 10097344., 10092416., 10137472.,
      10132352., 10177600., 10172288., 10217728., 8824536.,  8864128.,
      8859312.,  8899072.,  8894088.,  8934016.,  8928864.,  8968960.,
      7588032.,  7622256.,  7617696.,  7652064.,  7647360.,  7681872.,
      7677024.,  7711680.,  6343160.,  6371920.,  6367760.,  6396640.,
      6392360.,  6421360.,  6416960.,  6446080.,  5398315.,  5423260.,
      5419630.,  5444680.,  5440945.,  5466100.,  5462260.,  5487520.,
      6499872.,  6530058.,  6525324.,  6555636.,  6550776.,  6581214.,
      6576228.,  6606792.,  7608335.,  7643846.,  7637882.,  7673540.,
      7667429.,  7703234.,  7696976.,  7732928.,  8723536.,  8764456.,
      8757136.,  8798224.,  8790736.,  8831992.,  8824336.,  8865760.,
      7654325.,  7690424.,  7683578.,  7719824.,  7712831.,  7749224.,
      7742084.,  7778624.,  6578712.,  6609906.,  6603660.,  6634980.,
      6628608.,  6660054.,  6653556.,  6685128.,  5496865.,  5523070.,
      5517550.,  5543860.,  5538235.,  5564650.,  5558920.,  5585440.,
      4556030.,  4578120.,  4573580.,  4595760.,  4591130.,  4613400.,
      4608680.,  4631040.,  5483424.,  5510148.,  5504376.,  5531208.,
      5525328.,  5552268.,  5546280.,  5573328.,  6415878.,  6447308.,
      6440196.,  6471752.,  6464514.,  6496196.,  6488832.,  6520640.,
      7353248.,  7389456.,  7380896.,  7417248.,  7408544.,  7445040.,
      7436192.,  7472832.,  6449282.,  6481216.,  6473348.,  6505408.,
      6497414.,  6529600.,  6521480.,  6553792.,  5540688.,  5568276.,
      5561208.,  5588904.,  5581728.,  5609532.,  5602248.,  5630160.,
      4627610.,  4650780.,  4644620.,  4667880.,  4661630.,  4684980.,
      4678640.,  4702080.};
  const std::array<int, 4> in_shape = {{3, 9, 8, 4}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 512.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, VALID3x9x8x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      147696., 153510., 148020., 153852., 148344., 154194., 148668., 154536.,
      148992., 154878., 149316., 155220., 149640., 155562., 149964., 155904.,
      150288., 156246., 150612., 156588., 150936., 156930., 151260., 157272.,
      151584., 157614., 151908., 157956., 152232., 158298., 152556., 158640.,
      152880., 158982., 153204., 159324., 153528., 159666., 153852., 160008.,
      154176., 160350., 154500., 160692., 154824., 161034., 155148., 161376.,
      155472., 161718., 155796., 162060., 156120., 162402., 156444., 162744.,
      158064., 164454., 158388., 164796., 158712., 165138., 159036., 165480.,
      159360., 165822., 159684., 166164., 160008., 166506., 160332., 166848.,
      160656., 167190., 160980., 167532., 161304., 167874., 161628., 168216.,
      161952., 168558., 162276., 168900., 162600., 169242., 162924., 169584.,
      163248., 169926., 163572., 170268., 163896., 170610., 164220., 170952.,
      164544., 171294., 164868., 171636., 165192., 171978., 165516., 172320.,
      165840., 172662., 166164., 173004., 166488., 173346., 166812., 173688.,
      168432., 175398., 168756., 175740., 169080., 176082., 169404., 176424.,
      169728., 176766., 170052., 177108., 170376., 177450., 170700., 177792.,
      171024., 178134., 171348., 178476., 171672., 178818., 171996., 179160.,
      172320., 179502., 172644., 179844., 172968., 180186., 173292., 180528.,
      173616., 180870., 173940., 181212., 174264., 181554., 174588., 181896.,
      174912., 182238., 175236., 182580., 175560., 182922., 175884., 183264.,
      176208., 183606., 176532., 183948., 176856., 184290., 177180., 184632.,
      178800., 186342., 179124., 186684., 179448., 187026., 179772., 187368.,
      180096., 187710., 180420., 188052., 180744., 188394., 181068., 188736.,
      181392., 189078., 181716., 189420., 182040., 189762., 182364., 190104.,
      182688., 190446., 183012., 190788., 183336., 191130., 183660., 191472.,
      183984., 191814., 184308., 192156., 184632., 192498., 184956., 192840.,
      185280., 193182., 185604., 193524., 185928., 193866., 186252., 194208.,
      186576., 194550., 186900., 194892., 187224., 195234., 187548., 195576.,
      189168., 197286., 189492., 197628., 189816., 197970., 190140., 198312.,
      190464., 198654., 190788., 198996., 191112., 199338., 191436., 199680.,
      191760., 200022., 192084., 200364., 192408., 200706., 192732., 201048.,
      193056., 201390., 193380., 201732., 193704., 202074., 194028., 202416.,
      194352., 202758., 194676., 203100., 195000., 203442., 195324., 203784.,
      195648., 204126., 195972., 204468., 196296., 204810., 196620., 205152.,
      196944., 205494., 197268., 205836., 197592., 206178., 197916., 206520.,
      199536., 208230., 199860., 208572., 200184., 208914., 200508., 209256.,
      200832., 209598., 201156., 209940., 201480., 210282., 201804., 210624.,
      202128., 210966., 202452., 211308., 202776., 211650., 203100., 211992.,
      203424., 212334., 203748., 212676., 204072., 213018., 204396., 213360.,
      204720., 213702., 205044., 214044., 205368., 214386., 205692., 214728.,
      206016., 215070., 206340., 215412., 206664., 215754., 206988., 216096.,
      207312., 216438., 207636., 216780., 207960., 217122., 208284., 217464.,
      209904., 219174., 210228., 219516., 210552., 219858., 210876., 220200.,
      211200., 220542., 211524., 220884., 211848., 221226., 212172., 221568.,
      212496., 221910., 212820., 222252., 213144., 222594., 213468., 222936.,
      213792., 223278., 214116., 223620., 214440., 223962., 214764., 224304.,
      215088., 224646., 215412., 224988., 215736., 225330., 216060., 225672.,
      216384., 226014., 216708., 226356., 217032., 226698., 217356., 227040.,
      217680., 227382., 218004., 227724., 218328., 228066., 218652., 228408.};
  const std::array<int, 4> in_shape = {{3, 9, 8, 4}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, SAME3x9x8x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5223090.,  5241660.,  5260230.,  5278800.,  5246260.,  5264920.,
      5283580.,  5302240.,  5269430.,  5288180.,  5306930.,  5325680.,
      5292600.,  5311440.,  5330280.,  5349120.,  6279900.,  6302400.,
      6324900.,  6347400.,  6307488.,  6330096.,  6352704.,  6375312.,
      6335076.,  6357792.,  6380508.,  6403224.,  6362664.,  6385488.,
      6408312.,  6431136.,  7340102.,  7366604.,  7393106.,  7419608.,
      7372036.,  7398664.,  7425292.,  7451920.,  7403970.,  7430724.,
      7457478.,  7484232.,  7435904.,  7462784.,  7489664.,  7516544.,
      8403408.,  8433984.,  8464560.,  8495136.,  8439616.,  8470336.,
      8501056.,  8531776.,  8475824.,  8506688.,  8537552.,  8568416.,
      8512032.,  8543040.,  8574048.,  8605056.,  7359814.,  7386820.,
      7413826.,  7440832.,  7391244.,  7418376.,  7445508.,  7472640.,
      7422674.,  7449932.,  7477190.,  7504448.,  7454104.,  7481488.,
      7508872.,  7536256.,  6313692.,  6337056.,  6360420.,  6383784.,
      6340416.,  6363888.,  6387360.,  6410832.,  6367140.,  6390720.,
      6414300.,  6437880.,  6393864.,  6417552.,  6441240.,  6464928.,
      5265330.,  5284980.,  5304630.,  5324280.,  5287420.,  5307160.,
      5326900.,  5346640.,  5309510.,  5329340.,  5349170.,  5369000.,
      5331600.,  5351520.,  5371440.,  5391360.,  6577125.,  6600470.,
      6623815.,  6647160.,  6603330.,  6626780.,  6650230.,  6673680.,
      6629535.,  6653090.,  6676645.,  6700200.,  6655740.,  6679400.,
      6703060.,  6726720.,  7900758.,  7929024.,  7957290.,  7985556.,
      7931952.,  7960344.,  7988736.,  8017128.,  7963146.,  7991664.,
      8020182.,  8048700.,  7994340.,  8022984.,  8051628.,  8080272.,
      9226343.,  9259614.,  9292885.,  9326156.,  9262442.,  9295860.,
      9329278.,  9362696.,  9298541.,  9332106.,  9365671.,  9399236.,
      9334640.,  9368352.,  9402064.,  9435776.,  10553544., 10591904.,
      10630264., 10668624., 10594464., 10632992., 10671520., 10710048.,
      10635384., 10674080., 10712776., 10751472., 10676304., 10715168.,
      10754032., 10792896., 9235303.,  9269162.,  9303021.,  9336880.,
      9270814.,  9304820.,  9338826.,  9372832.,  9306325.,  9340478.,
      9374631.,  9408784.,  9341836.,  9376136.,  9410436.,  9444736.,
      7916118.,  7945392.,  7974666.,  8003940.,  7946304.,  7975704.,
      8005104.,  8034504.,  7976490.,  8006016.,  8035542.,  8065068.,
      8006676.,  8036328.,  8065980.,  8095632.,  6596325.,  6620930.,
      6645535.,  6670140.,  6621270.,  6645980.,  6670690.,  6695400.,
      6646215.,  6671030.,  6695845.,  6720660.,  6671160.,  6696080.,
      6721000.,  6745920.,  7831960.,  7858000.,  7884040.,  7910080.,
      7860720.,  7886880.,  7913040.,  7939200.,  7889480.,  7915760.,
      7942040.,  7968320.,  7918240.,  7944640.,  7971040.,  7997440.,
      9406416.,  9437952.,  9469488.,  9501024.,  9440640.,  9472320.,
      9504000.,  9535680.,  9474864.,  9506688.,  9538512.,  9570336.,
      9509088.,  9541056.,  9573024.,  9604992.,  10982664., 11019792.,
      11056920., 11094048., 11022256., 11059552., 11096848., 11134144.,
      11061848., 11099312., 11136776., 11174240., 11101440., 11139072.,
      11176704., 11214336., 12560320., 12603136., 12645952., 12688768.,
      12605184., 12648192., 12691200., 12734208., 12650048., 12693248.,
      12736448., 12779648., 12694912., 12738304., 12781696., 12825088.,
      10989832., 11027632., 11065432., 11103232., 11028752., 11066720.,
      11104688., 11142656., 11067672., 11105808., 11143944., 11182080.,
      11106592., 11144896., 11183200., 11221504., 9418704.,  9451392.,
      9484080.,  9516768.,  9451776.,  9484608.,  9517440.,  9550272.,
      9484848.,  9517824.,  9550800.,  9583776.,  9517920.,  9551040.,
      9584160.,  9617280.,  7847320.,  7874800.,  7902280.,  7929760.,
      7874640.,  7902240.,  7929840.,  7957440.,  7901960.,  7929680.,
      7957400.,  7985120.,  7929280.,  7957120.,  7984960.,  8012800.,
      9189835.,  9219050.,  9248265.,  9277480.,  9220670.,  9250020.,
      9279370.,  9308720.,  9251505.,  9280990.,  9310475.,  9339960.,
      9282340.,  9311960.,  9341580.,  9371200.,  11033418., 11068800.,
      11104182., 11139564., 11070096., 11105640., 11141184., 11176728.,
      11106774., 11142480., 11178186., 11213892., 11143452., 11179320.,
      11215188., 11251056., 12877865., 12919522., 12961179., 13002836.,
      12920278., 12962124., 13003970., 13045816., 12962691., 13004726.,
      13046761., 13088796., 13005104., 13047328., 13089552., 13131776.,
      14722744., 14770784., 14818824., 14866864., 14770784., 14819040.,
      14867296., 14915552., 14818824., 14867296., 14915768., 14964240.,
      14866864., 14915552., 14964240., 15012928., 12877865., 12920278.,
      12962691., 13005104., 12919522., 12962124., 13004726., 13047328.,
      12961179., 13003970., 13046761., 13089552., 13002836., 13045816.,
      13088796., 13131776., 11033418., 11070096., 11106774., 11143452.,
      11068800., 11105640., 11142480., 11179320., 11104182., 11141184.,
      11178186., 11215188., 11139564., 11176728., 11213892., 11251056.,
      9189835.,  9220670.,  9251505.,  9282340.,  9219050.,  9250020.,
      9280990.,  9311960.,  9248265.,  9279370.,  9310475.,  9341580.,
      9277480.,  9308720.,  9339960.,  9371200.,  7847320.,  7874640.,
      7901960.,  7929280.,  7874800.,  7902240.,  7929680.,  7957120.,
      7902280.,  7929840.,  7957400.,  7984960.,  7929760.,  7957440.,
      7985120.,  8012800.,  9418704.,  9451776.,  9484848.,  9517920.,
      9451392.,  9484608.,  9517824.,  9551040.,  9484080.,  9517440.,
      9550800.,  9584160.,  9516768.,  9550272.,  9583776.,  9617280.,
      10989832., 11028752., 11067672., 11106592., 11027632., 11066720.,
      11105808., 11144896., 11065432., 11104688., 11143944., 11183200.,
      11103232., 11142656., 11182080., 11221504., 12560320., 12605184.,
      12650048., 12694912., 12603136., 12648192., 12693248., 12738304.,
      12645952., 12691200., 12736448., 12781696., 12688768., 12734208.,
      12779648., 12825088., 10982664., 11022256., 11061848., 11101440.,
      11019792., 11059552., 11099312., 11139072., 11056920., 11096848.,
      11136776., 11176704., 11094048., 11134144., 11174240., 11214336.,
      9406416.,  9440640.,  9474864.,  9509088.,  9437952.,  9472320.,
      9506688.,  9541056.,  9469488.,  9504000.,  9538512.,  9573024.,
      9501024.,  9535680.,  9570336.,  9604992.,  7831960.,  7860720.,
      7889480.,  7918240.,  7858000.,  7886880.,  7915760.,  7944640.,
      7884040.,  7913040.,  7942040.,  7971040.,  7910080.,  7939200.,
      7968320.,  7997440.,  6596325.,  6621270.,  6646215.,  6671160.,
      6620930.,  6645980.,  6671030.,  6696080.,  6645535.,  6670690.,
      6695845.,  6721000.,  6670140.,  6695400.,  6720660.,  6745920.,
      7916118.,  7946304.,  7976490.,  8006676.,  7945392.,  7975704.,
      8006016.,  8036328.,  7974666.,  8005104.,  8035542.,  8065980.,
      8003940.,  8034504.,  8065068.,  8095632.,  9235303.,  9270814.,
      9306325.,  9341836.,  9269162.,  9304820.,  9340478.,  9376136.,
      9303021.,  9338826.,  9374631.,  9410436.,  9336880.,  9372832.,
      9408784.,  9444736.,  10553544., 10594464., 10635384., 10676304.,
      10591904., 10632992., 10674080., 10715168., 10630264., 10671520.,
      10712776., 10754032., 10668624., 10710048., 10751472., 10792896.,
      9226343.,  9262442.,  9298541.,  9334640.,  9259614.,  9295860.,
      9332106.,  9368352.,  9292885.,  9329278.,  9365671.,  9402064.,
      9326156.,  9362696.,  9399236.,  9435776.,  7900758.,  7931952.,
      7963146.,  7994340.,  7929024.,  7960344.,  7991664.,  8022984.,
      7957290.,  7988736.,  8020182.,  8051628.,  7985556.,  8017128.,
      8048700.,  8080272.,  6577125.,  6603330.,  6629535.,  6655740.,
      6600470.,  6626780.,  6653090.,  6679400.,  6623815.,  6650230.,
      6676645.,  6703060.,  6647160.,  6673680.,  6700200.,  6726720.,
      5265330.,  5287420.,  5309510.,  5331600.,  5284980.,  5307160.,
      5329340.,  5351520.,  5304630.,  5326900.,  5349170.,  5371440.,
      5324280.,  5346640.,  5369000.,  5391360.,  6313692.,  6340416.,
      6367140.,  6393864.,  6337056.,  6363888.,  6390720.,  6417552.,
      6360420.,  6387360.,  6414300.,  6441240.,  6383784.,  6410832.,
      6437880.,  6464928.,  7359814.,  7391244.,  7422674.,  7454104.,
      7386820.,  7418376.,  7449932.,  7481488.,  7413826.,  7445508.,
      7477190.,  7508872.,  7440832.,  7472640.,  7504448.,  7536256.,
      8403408.,  8439616.,  8475824.,  8512032.,  8433984.,  8470336.,
      8506688.,  8543040.,  8464560.,  8501056.,  8537552.,  8574048.,
      8495136.,  8531776.,  8568416.,  8605056.,  7340102.,  7372036.,
      7403970.,  7435904.,  7366604.,  7398664.,  7430724.,  7462784.,
      7393106.,  7425292.,  7457478.,  7489664.,  7419608.,  7451920.,
      7484232.,  7516544.,  6279900.,  6307488.,  6335076.,  6362664.,
      6302400.,  6330096.,  6357792.,  6385488.,  6324900.,  6352704.,
      6380508.,  6408312.,  6347400.,  6375312.,  6403224.,  6431136.,
      5223090.,  5246260.,  5269430.,  5292600.,  5241660.,  5264920.,
      5288180.,  5311440.,  5260230.,  5283580.,  5306930.,  5330280.,
      5278800.,  5302240.,  5325680.,  5349120.};
  const std::array<int, 4> in_shape = {{3, 9, 8, 4}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 512.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, VALID3x9x8x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      289578., 295392., 301206., 307020., 290208., 296040., 301872., 307704.,
      290838., 296688., 302538., 308388., 291468., 297336., 303204., 309072.,
      292098., 297984., 303870., 309756., 292728., 298632., 304536., 310440.,
      293358., 299280., 305202., 311124., 293988., 299928., 305868., 311808.,
      294618., 300576., 306534., 312492., 295248., 301224., 307200., 313176.,
      295878., 301872., 307866., 313860., 296508., 302520., 308532., 314544.,
      297138., 303168., 309198., 315228., 297768., 303816., 309864., 315912.,
      298398., 304464., 310530., 316596., 299028., 305112., 311196., 317280.,
      299658., 305760., 311862., 317964., 300288., 306408., 312528., 318648.,
      300918., 307056., 313194., 319332., 301548., 307704., 313860., 320016.,
      302178., 308352., 314526., 320700., 302808., 309000., 315192., 321384.,
      303438., 309648., 315858., 322068., 304068., 310296., 316524., 322752.,
      304698., 310944., 317190., 323436., 305328., 311592., 317856., 324120.,
      305958., 312240., 318522., 324804., 306588., 312888., 319188., 325488.,
      309738., 316128., 322518., 328908., 310368., 316776., 323184., 329592.,
      310998., 317424., 323850., 330276., 311628., 318072., 324516., 330960.,
      312258., 318720., 325182., 331644., 312888., 319368., 325848., 332328.,
      313518., 320016., 326514., 333012., 314148., 320664., 327180., 333696.,
      314778., 321312., 327846., 334380., 315408., 321960., 328512., 335064.,
      316038., 322608., 329178., 335748., 316668., 323256., 329844., 336432.,
      317298., 323904., 330510., 337116., 317928., 324552., 331176., 337800.,
      318558., 325200., 331842., 338484., 319188., 325848., 332508., 339168.,
      319818., 326496., 333174., 339852., 320448., 327144., 333840., 340536.,
      321078., 327792., 334506., 341220., 321708., 328440., 335172., 341904.,
      322338., 329088., 335838., 342588., 322968., 329736., 336504., 343272.,
      323598., 330384., 337170., 343956., 324228., 331032., 337836., 344640.,
      324858., 331680., 338502., 345324., 325488., 332328., 339168., 346008.,
      326118., 332976., 339834., 346692., 326748., 333624., 340500., 347376.,
      329898., 336864., 343830., 350796., 330528., 337512., 344496., 351480.,
      331158., 338160., 345162., 352164., 331788., 338808., 345828., 352848.,
      332418., 339456., 346494., 353532., 333048., 340104., 347160., 354216.,
      333678., 340752., 347826., 354900., 334308., 341400., 348492., 355584.,
      334938., 342048., 349158., 356268., 335568., 342696., 349824., 356952.,
      336198., 343344., 350490., 357636., 336828., 343992., 351156., 358320.,
      337458., 344640., 351822., 359004., 338088., 345288., 352488., 359688.,
      338718., 345936., 353154., 360372., 339348., 346584., 353820., 361056.,
      339978., 347232., 354486., 361740., 340608., 347880., 355152., 362424.,
      341238., 348528., 355818., 363108., 341868., 349176., 356484., 363792.,
      342498., 349824., 357150., 364476., 343128., 350472., 357816., 365160.,
      343758., 351120., 358482., 365844., 344388., 351768., 359148., 366528.,
      345018., 352416., 359814., 367212., 345648., 353064., 360480., 367896.,
      346278., 353712., 361146., 368580., 346908., 354360., 361812., 369264.,
      350058., 357600., 365142., 372684., 350688., 358248., 365808., 373368.,
      351318., 358896., 366474., 374052., 351948., 359544., 367140., 374736.,
      352578., 360192., 367806., 375420., 353208., 360840., 368472., 376104.,
      353838., 361488., 369138., 376788., 354468., 362136., 369804., 377472.,
      355098., 362784., 370470., 378156., 355728., 363432., 371136., 378840.,
      356358., 364080., 371802., 379524., 356988., 364728., 372468., 380208.,
      357618., 365376., 373134., 380892., 358248., 366024., 373800., 381576.,
      358878., 366672., 374466., 382260., 359508., 367320., 375132., 382944.,
      360138., 367968., 375798., 383628., 360768., 368616., 376464., 384312.,
      361398., 369264., 377130., 384996., 362028., 369912., 377796., 385680.,
      362658., 370560., 378462., 386364., 363288., 371208., 379128., 387048.,
      363918., 371856., 379794., 387732., 364548., 372504., 380460., 388416.,
      365178., 373152., 381126., 389100., 365808., 373800., 381792., 389784.,
      366438., 374448., 382458., 390468., 367068., 375096., 383124., 391152.,
      370218., 378336., 386454., 394572., 370848., 378984., 387120., 395256.,
      371478., 379632., 387786., 395940., 372108., 380280., 388452., 396624.,
      372738., 380928., 389118., 397308., 373368., 381576., 389784., 397992.,
      373998., 382224., 390450., 398676., 374628., 382872., 391116., 399360.,
      375258., 383520., 391782., 400044., 375888., 384168., 392448., 400728.,
      376518., 384816., 393114., 401412., 377148., 385464., 393780., 402096.,
      377778., 386112., 394446., 402780., 378408., 386760., 395112., 403464.,
      379038., 387408., 395778., 404148., 379668., 388056., 396444., 404832.,
      380298., 388704., 397110., 405516., 380928., 389352., 397776., 406200.,
      381558., 390000., 398442., 406884., 382188., 390648., 399108., 407568.,
      382818., 391296., 399774., 408252., 383448., 391944., 400440., 408936.,
      384078., 392592., 401106., 409620., 384708., 393240., 401772., 410304.,
      385338., 393888., 402438., 410988., 385968., 394536., 403104., 411672.,
      386598., 395184., 403770., 412356., 387228., 395832., 404436., 413040.,
      390378., 399072., 407766., 416460., 391008., 399720., 408432., 417144.,
      391638., 400368., 409098., 417828., 392268., 401016., 409764., 418512.,
      392898., 401664., 410430., 419196., 393528., 402312., 411096., 419880.,
      394158., 402960., 411762., 420564., 394788., 403608., 412428., 421248.,
      395418., 404256., 413094., 421932., 396048., 404904., 413760., 422616.,
      396678., 405552., 414426., 423300., 397308., 406200., 415092., 423984.,
      397938., 406848., 415758., 424668., 398568., 407496., 416424., 425352.,
      399198., 408144., 417090., 426036., 399828., 408792., 417756., 426720.,
      400458., 409440., 418422., 427404., 401088., 410088., 419088., 428088.,
      401718., 410736., 419754., 428772., 402348., 411384., 420420., 429456.,
      402978., 412032., 421086., 430140., 403608., 412680., 421752., 430824.,
      404238., 413328., 422418., 431508., 404868., 413976., 423084., 432192.,
      405498., 414624., 423750., 432876., 406128., 415272., 424416., 433560.,
      406758., 415920., 425082., 434244., 407388., 416568., 425748., 434928.,
      410538., 419808., 429078., 438348., 411168., 420456., 429744., 439032.,
      411798., 421104., 430410., 439716., 412428., 421752., 431076., 440400.,
      413058., 422400., 431742., 441084., 413688., 423048., 432408., 441768.,
      414318., 423696., 433074., 442452., 414948., 424344., 433740., 443136.,
      415578., 424992., 434406., 443820., 416208., 425640., 435072., 444504.,
      416838., 426288., 435738., 445188., 417468., 426936., 436404., 445872.,
      418098., 427584., 437070., 446556., 418728., 428232., 437736., 447240.,
      419358., 428880., 438402., 447924., 419988., 429528., 439068., 448608.,
      420618., 430176., 439734., 449292., 421248., 430824., 440400., 449976.,
      421878., 431472., 441066., 450660., 422508., 432120., 441732., 451344.,
      423138., 432768., 442398., 452028., 423768., 433416., 443064., 452712.,
      424398., 434064., 443730., 453396., 425028., 434712., 444396., 454080.,
      425658., 435360., 445062., 454764., 426288., 436008., 445728., 455448.,
      426918., 436656., 446394., 456132., 427548., 437304., 447060., 456816.};
  const std::array<int, 4> in_shape = {{3, 9, 8, 4}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, SAME3x9x9x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      2081394., 2430288., 2779704., 3129624., 2783592., 2437092., 2090142.,
      2453808., 2864442., 3275496., 3686949., 3278520., 2869734., 2460612.,
      2829624., 3302376., 3775392., 4248648., 3777120., 3305400., 2833512.,
      3207384., 3742389., 4277448., 4812534., 4277448., 3742389., 3207384.,
      2833512., 3305400., 3777120., 4248648., 3775392., 3302376., 2829624.,
      2460612., 2869734., 3278520., 3686949., 3275496., 2864442., 2453808.,
      2090142., 2437092., 2783592., 3129624., 2779704., 2430288., 2081394.};
  const std::array<int, 4> in_shape = {{3, 9, 9, 1}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, VALID3x9x9x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      48402., 48780., 49158., 49536., 49914., 50292., 50670., 51804., 52182.,
      52560., 52938., 53316., 53694., 54072., 55206., 55584., 55962., 56340.,
      56718., 57096., 57474., 58608., 58986., 59364., 59742., 60120., 60498.,
      60876., 62010., 62388., 62766., 63144., 63522., 63900., 64278., 65412.,
      65790., 66168., 66546., 66924., 67302., 67680., 68814., 69192., 69570.,
      69948., 70326., 70704., 71082.};
  const std::array<int, 4> in_shape = {{3, 9, 9, 1}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, SAME3x9x9x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      4151232., 4162788., 4847031., 4860576., 5543856., 5559408., 6241671.,
      6259248., 5551488., 5567184., 4860387., 4874184., 4168404., 4180284.,
      4893567., 4907616., 5712420., 5728884., 6532092., 6550992., 7352541.,
      7373898., 6537972., 6557040., 5722710., 5739468., 4906797., 4921224.,
      5642544., 5659248., 6585180., 6604752., 7528320., 7550784., 8471916.,
      8497296., 7531584., 7554240., 6590892., 6610800., 5649888., 5667024.,
      6395247., 6414768., 7461909., 7484778., 8528652., 8554896., 9595422.,
      9625068., 8528436., 8554896., 7461531., 7484778., 6394761., 6414768.,
      5649024., 5667024., 6589716., 6610800., 7530048., 7554240., 8469972.,
      8497296., 7526400., 7550784., 6583332., 6604752., 5640816., 5659248.,
      4904907., 4921224., 5720358., 5739468., 6535116., 6557040., 7349139.,
      7373898., 6528900., 6550992., 5709480., 5728884., 4890921., 4907616.,
      4165812., 4180284., 4857237., 4874184., 5547744., 5567184., 6237297.,
      6259248., 5539824., 5559408., 4843377., 4860576., 4147992., 4162788.};
  const std::array<int, 4> in_shape = {{3, 9, 9, 1}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, VALID3x9x9x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      94320.,  96804.,  95049.,  97560.,  95778.,  98316.,  96507.,  99072.,
      97236.,  99828.,  97965.,  100584., 98694.,  101340., 100881., 103608.,
      101610., 104364., 102339., 105120., 103068., 105876., 103797., 106632.,
      104526., 107388., 105255., 108144., 107442., 110412., 108171., 111168.,
      108900., 111924., 109629., 112680., 110358., 113436., 111087., 114192.,
      111816., 114948., 114003., 117216., 114732., 117972., 115461., 118728.,
      116190., 119484., 116919., 120240., 117648., 120996., 118377., 121752.,
      120564., 124020., 121293., 124776., 122022., 125532., 122751., 126288.,
      123480., 127044., 124209., 127800., 124938., 128556., 127125., 130824.,
      127854., 131580., 128583., 132336., 129312., 133092., 130041., 133848.,
      130770., 134604., 131499., 135360., 133686., 137628., 134415., 138384.,
      135144., 139140., 135873., 139896., 136602., 140652., 137331., 141408.,
      138060., 142164.};
  const std::array<int, 4> in_shape = {{3, 9, 9, 1}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, SAME3x9x9x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      3400284., 3411840., 3423396., 3434952., 3956869., 3970414., 3983959.,
      3997504., 4561568., 4577120., 4592672., 4608224., 5163621., 5181198.,
      5198775., 5216352., 4588464., 4604160., 4619856., 4635552., 4016609.,
      4030406., 4044203., 4058000., 3448128., 3460008., 3471888., 3483768.,
      4097565., 4111614., 4125663., 4139712., 4767224., 4783688., 4800152.,
      4816616., 5488676., 5507576., 5526476., 5545376., 6206541., 6227898.,
      6249255., 6270612., 5512556., 5531624., 5550692., 5569760., 4822838.,
      4839596., 4856354., 4873112., 4137471., 4151898., 4166325., 4180752.,
      4780320., 4797024., 4813728., 4830432., 5559876., 5579448., 5599020.,
      5618592., 6394688., 6417152., 6439616., 6462080., 7224756., 7250136.,
      7275516., 7300896., 6413824., 6436480., 6459136., 6481792., 5608340.,
      5628248., 5648156., 5668064., 4808400., 4825536., 4842672., 4859808.,
      5442717., 5462238., 5481759., 5501280., 6328021., 6350890., 6373759.,
      6396628., 7271828., 7298072., 7324316., 7350560., 8209518., 8239164.,
      8268810., 8298456., 7284492., 7310952., 7337412., 7363872., 6366311.,
      6389558., 6412805., 6436052., 5455083., 5475090., 5495097., 5515104.,
      4858032., 4876032., 4894032., 4912032., 5646284., 5667368., 5688452.,
      5709536., 6497792., 6521984., 6546176., 6570368., 7343340., 7370664.,
      7397988., 7425312., 6516416., 6540800., 6565184., 6589568., 5696156.,
      5717576., 5738996., 5760416., 4882656., 4901088., 4919520., 4937952.,
      4333017., 4349334., 4365651., 4381968., 5034918., 5054028., 5073138.,
      5092248., 5805044., 5826968., 5848892., 5870816., 6569583., 6594342.,
      6619101., 6643860., 5831356., 5853448., 5875540., 5897632., 5099396.,
      5118800., 5138204., 5157608., 4373787., 4390482., 4407177., 4423872.,
      3873504., 3887976., 3902448., 3916920., 4500727., 4517674., 4534621.,
      4551568., 5201360., 5220800., 5240240., 5259680., 5896995., 5918946.,
      5940897., 5962848., 5237088., 5256672., 5276256., 5295840., 4582835.,
      4600034., 4617233., 4634432., 3934308., 3949104., 3963900., 3978696.};
  const std::array<int, 4> in_shape = {{3, 9, 9, 1}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 512.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, VALID3x9x9x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      186156., 188640., 191124., 193608., 187587., 190098., 192609., 195120.,
      189018., 191556., 194094., 196632., 190449., 193014., 195579., 198144.,
      191880., 194472., 197064., 199656., 193311., 195930., 198549., 201168.,
      194742., 197388., 200034., 202680., 199035., 201762., 204489., 207216.,
      200466., 203220., 205974., 208728., 201897., 204678., 207459., 210240.,
      203328., 206136., 208944., 211752., 204759., 207594., 210429., 213264.,
      206190., 209052., 211914., 214776., 207621., 210510., 213399., 216288.,
      211914., 214884., 217854., 220824., 213345., 216342., 219339., 222336.,
      214776., 217800., 220824., 223848., 216207., 219258., 222309., 225360.,
      217638., 220716., 223794., 226872., 219069., 222174., 225279., 228384.,
      220500., 223632., 226764., 229896., 224793., 228006., 231219., 234432.,
      226224., 229464., 232704., 235944., 227655., 230922., 234189., 237456.,
      229086., 232380., 235674., 238968., 230517., 233838., 237159., 240480.,
      231948., 235296., 238644., 241992., 233379., 236754., 240129., 243504.,
      237672., 241128., 244584., 248040., 239103., 242586., 246069., 249552.,
      240534., 244044., 247554., 251064., 241965., 245502., 249039., 252576.,
      243396., 246960., 250524., 254088., 244827., 248418., 252009., 255600.,
      246258., 249876., 253494., 257112., 250551., 254250., 257949., 261648.,
      251982., 255708., 259434., 263160., 253413., 257166., 260919., 264672.,
      254844., 258624., 262404., 266184., 256275., 260082., 263889., 267696.,
      257706., 261540., 265374., 269208., 259137., 262998., 266859., 270720.,
      263430., 267372., 271314., 275256., 264861., 268830., 272799., 276768.,
      266292., 270288., 274284., 278280., 267723., 271746., 275769., 279792.,
      269154., 273204., 277254., 281304., 270585., 274662., 278739., 282816.,
      272016., 276120., 280224., 284328.};
  const std::array<int, 4> in_shape = {{3, 9, 9, 1}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, SAME3x9x9x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      4147992., 4162788., 4843377., 4860576., 5539824., 5559408., 6237297.,
      6259248., 5547744., 5567184., 4857237., 4874184., 4165812., 4180284.,
      4890921., 4907616., 5709480., 5728884., 6528900., 6550992., 7349139.,
      7373898., 6535116., 6557040., 5720358., 5739468., 4904907., 4921224.,
      5640816., 5659248., 6583332., 6604752., 7526400., 7550784., 8469972.,
      8497296., 7530048., 7554240., 6589716., 6610800., 5649024., 5667024.,
      6394761., 6414768., 7461531., 7484778., 8528436., 8554896., 9595422.,
      9625068., 8528652., 8554896., 7461909., 7484778., 6395247., 6414768.,
      5649888., 5667024., 6590892., 6610800., 7531584., 7554240., 8471916.,
      8497296., 7528320., 7550784., 6585180., 6604752., 5642544., 5659248.,
      4906797., 4921224., 5722710., 5739468., 6537972., 6557040., 7352541.,
      7373898., 6532092., 6550992., 5712420., 5728884., 4893567., 4907616.,
      4168404., 4180284., 4860387., 4874184., 5551488., 5567184., 6241671.,
      6259248., 5543856., 5559408., 4847031., 4860576., 4151232., 4162788.};
  const std::array<int, 4> in_shape = {{3, 9, 9, 2}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, VALID3x9x9x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      96426.,  96804.,  97182.,  97560.,  97938.,  98316.,  98694.,  99072.,
      99450.,  99828.,  100206., 100584., 100962., 101340., 103230., 103608.,
      103986., 104364., 104742., 105120., 105498., 105876., 106254., 106632.,
      107010., 107388., 107766., 108144., 110034., 110412., 110790., 111168.,
      111546., 111924., 112302., 112680., 113058., 113436., 113814., 114192.,
      114570., 114948., 116838., 117216., 117594., 117972., 118350., 118728.,
      119106., 119484., 119862., 120240., 120618., 120996., 121374., 121752.,
      123642., 124020., 124398., 124776., 125154., 125532., 125910., 126288.,
      126666., 127044., 127422., 127800., 128178., 128556., 130446., 130824.,
      131202., 131580., 131958., 132336., 132714., 133092., 133470., 133848.,
      134226., 134604., 134982., 135360., 137250., 137628., 138006., 138384.,
      138762., 139140., 139518., 139896., 140274., 140652., 141030., 141408.,
      141786., 142164.};
  const std::array<int, 4> in_shape = {{3, 9, 9, 2}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, SAME3x9x9x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1682516., 1695280., 1696640., 1709512., 1959566., 1974498., 1975918.,
      1990976., 2288112., 2305248., 2306912., 2324192., 2617650., 2637026.,
      2638862., 2658400., 2329264., 2346432., 2348032., 2365344., 2041054.,
      2055978., 2057414., 2072464., 1765636., 1778536., 1779624., 1792632.,
      2125070., 2139730., 2141438., 2156224., 2477891., 2495056., 2496840.,
      2514152., 2886920., 2906632., 2908664., 2928544., 3297033., 3319334.,
      3321530., 3344020., 2937928., 2957720., 2959592., 2979552., 2578931.,
      2596172., 2597804., 2615192., 2228062., 2242966., 2244186., 2259216.,
      2608880., 2625760., 2627168., 2644192., 3043592., 3063368., 3064760.,
      3084704., 3539008., 3561728., 3563264., 3586176., 4035384., 4061096.,
      4062680., 4088608., 3598144., 3620992., 3622272., 3645312., 3161160.,
      3181096., 3182168., 3202272., 2727856., 2745088., 2745792., 2763168.,
      3128114., 3147538., 3147998., 3167584., 3649865., 3672630., 3672874.,
      3695828., 4236600., 4262760., 4262936., 4289312., 4823955., 4853564.,
      4853564., 4883416., 4236600., 4262936., 4262760., 4289312., 3649865.,
      3672874., 3672630., 3695828., 3128114., 3147998., 3147538., 3167584.,
      2727856., 2745792., 2745088., 2763168., 3161160., 3182168., 3181096.,
      3202272., 3598144., 3622272., 3620992., 3645312., 4035384., 4062680.,
      4061096., 4088608., 3539008., 3563264., 3561728., 3586176., 3043592.,
      3064760., 3063368., 3084704., 2608880., 2627168., 2625760., 2644192.,
      2228062., 2244186., 2242966., 2259216., 2578931., 2597804., 2596172.,
      2615192., 2937928., 2959592., 2957720., 2979552., 3297033., 3321530.,
      3319334., 3344020., 2886920., 2908664., 2906632., 2928544., 2477891.,
      2496840., 2495056., 2514152., 2125070., 2141438., 2139730., 2156224.,
      1765636., 1779624., 1778536., 1792632., 2041054., 2057414., 2055978.,
      2072464., 2329264., 2348032., 2346432., 2365344., 2617650., 2638862.,
      2637026., 2658400., 2288112., 2306912., 2305248., 2324192., 1959566.,
      1975918., 1974498., 1990976., 1682516., 1696640., 1695280., 1709512.};
  const std::array<int, 4> in_shape = {{3, 9, 9, 2}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 256.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, VALID3x9x9x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      187911., 192852., 188640., 193608., 189369., 194364., 190098., 195120.,
      190827., 195876., 191556., 196632., 192285., 197388., 193014., 198144.,
      193743., 198900., 194472., 199656., 195201., 200412., 195930., 201168.,
      196659., 201924., 197388., 202680., 201033., 206460., 201762., 207216.,
      202491., 207972., 203220., 208728., 203949., 209484., 204678., 210240.,
      205407., 210996., 206136., 211752., 206865., 212508., 207594., 213264.,
      208323., 214020., 209052., 214776., 209781., 215532., 210510., 216288.,
      214155., 220068., 214884., 220824., 215613., 221580., 216342., 222336.,
      217071., 223092., 217800., 223848., 218529., 224604., 219258., 225360.,
      219987., 226116., 220716., 226872., 221445., 227628., 222174., 228384.,
      222903., 229140., 223632., 229896., 227277., 233676., 228006., 234432.,
      228735., 235188., 229464., 235944., 230193., 236700., 230922., 237456.,
      231651., 238212., 232380., 238968., 233109., 239724., 233838., 240480.,
      234567., 241236., 235296., 241992., 236025., 242748., 236754., 243504.,
      240399., 247284., 241128., 248040., 241857., 248796., 242586., 249552.,
      243315., 250308., 244044., 251064., 244773., 251820., 245502., 252576.,
      246231., 253332., 246960., 254088., 247689., 254844., 248418., 255600.,
      249147., 256356., 249876., 257112., 253521., 260892., 254250., 261648.,
      254979., 262404., 255708., 263160., 256437., 263916., 257166., 264672.,
      257895., 265428., 258624., 266184., 259353., 266940., 260082., 267696.,
      260811., 268452., 261540., 269208., 262269., 269964., 262998., 270720.,
      266643., 274500., 267372., 275256., 268101., 276012., 268830., 276768.,
      269559., 277524., 270288., 278280., 271017., 279036., 271746., 279792.,
      272475., 280548., 273204., 281304., 273933., 282060., 274662., 282816.,
      275391., 283572., 276120., 284328.};
  const std::array<int, 4> in_shape = {{3, 9, 9, 2}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, SAME3x9x9x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      6772428.,  6795432.,  6818436.,  6841440.,  6800568.,  6823680.,
      6846792.,  6869904.,  7881160.,  7908124.,  7935088.,  7962052.,
      7913738.,  7940828.,  7967918.,  7995008.,  9085680.,  9116640.,
      9147600.,  9178560.,  9123136.,  9154240.,  9185344.,  9216448.,
      10284980., 10319972., 10354964., 10389956., 10327242., 10362396.,
      10397550., 10432704., 9139536.,  9170784.,  9202032.,  9233280.,
      9176928.,  9208320.,  9239712.,  9271104.,  8000624.,  8028092.,
      8055560.,  8083028.,  8033218.,  8060812.,  8088406.,  8116000.,
      6868388.,  6892040.,  6915692.,  6939344.,  6896256.,  6920016.,
      6943776.,  6967536.,  8162520.,  8190492.,  8218464.,  8246436.,
      8195130.,  8223228.,  8251326.,  8279424.,  9496697.,  9529478.,
      9562259.,  9595040.,  9534448.,  9567376.,  9600304.,  9633232.,
      10934032., 10971664., 11009296., 11046928., 10977352., 11015152.,
      11052952., 11090752., 12364277., 12406802., 12449327., 12491852.,
      12413082., 12455796., 12498510., 12541224., 10981952., 11019920.,
      11057888., 11095856., 11025112., 11063248., 11101384., 11139520.,
      9608077.,  9641446.,  9674815.,  9708184.,  9645676.,  9679192.,
      9712708.,  9746224.,  8242820.,  8271548.,  8300276.,  8329004.,
      8274942.,  8303796.,  8332650.,  8361504.,  9524208.,  9557472.,
      9590736.,  9624000.,  9560640.,  9594048.,  9627456.,  9660864.,
      11077584., 11116560., 11155536., 11194512., 11119752., 11158896.,
      11198040., 11237184., 12741056., 12785792., 12830528., 12875264.,
      12789376., 12834304., 12879232., 12924160., 14395136., 14445680.,
      14496224., 14546768., 14449512., 14500272., 14551032., 14601792.,
      12779584., 12824704., 12869824., 12914944., 12827648., 12872960.,
      12918272., 12963584., 11174832., 11214480., 11254128., 11293776.,
      11216680., 11256496., 11296312., 11336128., 9581072.,  9615200.,
      9649328.,  9683456.,  9616800.,  9651072.,  9685344.,  9719616.,
      10845828., 10884708., 10923588., 10962468., 10885434., 10924476.,
      10963518., 11002560., 12610213., 12655762., 12701311., 12746860.,
      12656042., 12701780., 12747518., 12793256., 14491200., 14543472.,
      14595744., 14648016., 14543656., 14596144., 14648632., 14701120.,
      16360061., 16419110., 16478159., 16537208., 16419036., 16478328.,
      16537620., 16596912., 14516880., 14569584., 14622288., 14674992.,
      14568984., 14621904., 14674824., 14727744., 12687281., 12733586.,
      12779891., 12826196., 12732622., 12779116., 12825610., 12872104.,
      10871480., 10911332., 10951184., 10991036., 10910166., 10950180.,
      10990194., 11030208., 9681744.,  9717600.,  9753456.,  9789312.,
      9716064.,  9752064.,  9788064.,  9824064.,  11252864., 11294864.,
      11336864., 11378864., 11292568., 11334736., 11376904., 11419072.,
      12950080., 12998272., 13046464., 13094656., 12995584., 13043968.,
      13092352., 13140736., 14635472., 14689904., 14744336., 14798768.,
      14686680., 14741328., 14795976., 14850624., 12987584., 13036160.,
      13084736., 13133312., 13032832., 13081600., 13130368., 13179136.,
      11352928., 11395600., 11438272., 11480944., 11392312., 11435152.,
      11477992., 11520832., 9731696.,  9768416.,  9805136.,  9841856.,
      9765312.,  9802176.,  9839040.,  9875904.,  8636352.,  8668860.,
      8701368.,  8733876.,  8666034.,  8698668.,  8731302.,  8763936.,
      10035501., 10073574., 10111647., 10149720., 10069836., 10108056.,
      10146276., 10184496., 11570672., 11614352., 11658032., 11701712.,
      11610088., 11653936., 11697784., 11741632., 13094753., 13144082.,
      13193411., 13242740., 13139166., 13188684., 13238202., 13287720.,
      11623456., 11667472., 11711488., 11755504., 11662712., 11706896.,
      11751080., 11795264., 10164609., 10203270., 10241931., 10280592.,
      10198792., 10237600., 10276408., 10315216., 8718380.,  8751644.,
      8784908.,  8818172.,  8747574.,  8780964.,  8814354.,  8847744.,
      7721316.,  7750152.,  7778988.,  7807824.,  7747008.,  7775952.,
      7804896.,  7833840.,  8971732.,  9005500.,  9039268.,  9073036.,
      9001454.,  9035348.,  9069242.,  9103136.,  10368528., 10407264.,
      10446000., 10484736., 10402720., 10441600., 10480480., 10519360.,
      11755400., 11799140., 11842880., 11886620., 11793990., 11837892.,
      11881794., 11925696., 10440048., 10479072., 10518096., 10557120.,
      10474176., 10513344., 10552512., 10591680., 9135932.,  9170204.,
      9204476.,  9238748.,  9165670.,  9200068.,  9234466.,  9268864.,
      7843196.,  7872680.,  7902164.,  7931648.,  7868616.,  7898208.,
      7927800.,  7957392.};
  const std::array<int, 4> in_shape = {{3, 9, 9, 2}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 512.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, VALID3x9x9x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      370881., 375822., 380763., 385704., 372312., 377280., 382248., 387216.,
      373743., 378738., 383733., 388728., 375174., 380196., 385218., 390240.,
      376605., 381654., 386703., 391752., 378036., 383112., 388188., 393264.,
      379467., 384570., 389673., 394776., 380898., 386028., 391158., 396288.,
      382329., 387486., 392643., 397800., 383760., 388944., 394128., 399312.,
      385191., 390402., 395613., 400824., 386622., 391860., 397098., 402336.,
      388053., 393318., 398583., 403848., 389484., 394776., 400068., 405360.,
      396639., 402066., 407493., 412920., 398070., 403524., 408978., 414432.,
      399501., 404982., 410463., 415944., 400932., 406440., 411948., 417456.,
      402363., 407898., 413433., 418968., 403794., 409356., 414918., 420480.,
      405225., 410814., 416403., 421992., 406656., 412272., 417888., 423504.,
      408087., 413730., 419373., 425016., 409518., 415188., 420858., 426528.,
      410949., 416646., 422343., 428040., 412380., 418104., 423828., 429552.,
      413811., 419562., 425313., 431064., 415242., 421020., 426798., 432576.,
      422397., 428310., 434223., 440136., 423828., 429768., 435708., 441648.,
      425259., 431226., 437193., 443160., 426690., 432684., 438678., 444672.,
      428121., 434142., 440163., 446184., 429552., 435600., 441648., 447696.,
      430983., 437058., 443133., 449208., 432414., 438516., 444618., 450720.,
      433845., 439974., 446103., 452232., 435276., 441432., 447588., 453744.,
      436707., 442890., 449073., 455256., 438138., 444348., 450558., 456768.,
      439569., 445806., 452043., 458280., 441000., 447264., 453528., 459792.,
      448155., 454554., 460953., 467352., 449586., 456012., 462438., 468864.,
      451017., 457470., 463923., 470376., 452448., 458928., 465408., 471888.,
      453879., 460386., 466893., 473400., 455310., 461844., 468378., 474912.,
      456741., 463302., 469863., 476424., 458172., 464760., 471348., 477936.,
      459603., 466218., 472833., 479448., 461034., 467676., 474318., 480960.,
      462465., 469134., 475803., 482472., 463896., 470592., 477288., 483984.,
      465327., 472050., 478773., 485496., 466758., 473508., 480258., 487008.,
      473913., 480798., 487683., 494568., 475344., 482256., 489168., 496080.,
      476775., 483714., 490653., 497592., 478206., 485172., 492138., 499104.,
      479637., 486630., 493623., 500616., 481068., 488088., 495108., 502128.,
      482499., 489546., 496593., 503640., 483930., 491004., 498078., 505152.,
      485361., 492462., 499563., 506664., 486792., 493920., 501048., 508176.,
      488223., 495378., 502533., 509688., 489654., 496836., 504018., 511200.,
      491085., 498294., 505503., 512712., 492516., 499752., 506988., 514224.,
      499671., 507042., 514413., 521784., 501102., 508500., 515898., 523296.,
      502533., 509958., 517383., 524808., 503964., 511416., 518868., 526320.,
      505395., 512874., 520353., 527832., 506826., 514332., 521838., 529344.,
      508257., 515790., 523323., 530856., 509688., 517248., 524808., 532368.,
      511119., 518706., 526293., 533880., 512550., 520164., 527778., 535392.,
      513981., 521622., 529263., 536904., 515412., 523080., 530748., 538416.,
      516843., 524538., 532233., 539928., 518274., 525996., 533718., 541440.,
      525429., 533286., 541143., 549000., 526860., 534744., 542628., 550512.,
      528291., 536202., 544113., 552024., 529722., 537660., 545598., 553536.,
      531153., 539118., 547083., 555048., 532584., 540576., 548568., 556560.,
      534015., 542034., 550053., 558072., 535446., 543492., 551538., 559584.,
      536877., 544950., 553023., 561096., 538308., 546408., 554508., 562608.,
      539739., 547866., 555993., 564120., 541170., 549324., 557478., 565632.,
      542601., 550782., 558963., 567144., 544032., 552240., 560448., 568656.};
  const std::array<int, 4> in_shape = {{3, 9, 9, 2}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, SAME3x9x9x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      3934308., 3949104., 3963900., 3978696., 4582835., 4600034., 4617233.,
      4634432., 5237088., 5256672., 5276256., 5295840., 5896995., 5918946.,
      5940897., 5962848., 5201360., 5220800., 5240240., 5259680., 4500727.,
      4517674., 4534621., 4551568., 3873504., 3887976., 3902448., 3916920.,
      4373787., 4390482., 4407177., 4423872., 5099396., 5118800., 5138204.,
      5157608., 5831356., 5853448., 5875540., 5897632., 6569583., 6594342.,
      6619101., 6643860., 5805044., 5826968., 5848892., 5870816., 5034918.,
      5054028., 5073138., 5092248., 4333017., 4349334., 4365651., 4381968.,
      4882656., 4901088., 4919520., 4937952., 5696156., 5717576., 5738996.,
      5760416., 6516416., 6540800., 6565184., 6589568., 7343340., 7370664.,
      7397988., 7425312., 6497792., 6521984., 6546176., 6570368., 5646284.,
      5667368., 5688452., 5709536., 4858032., 4876032., 4894032., 4912032.,
      5455083., 5475090., 5495097., 5515104., 6366311., 6389558., 6412805.,
      6436052., 7284492., 7310952., 7337412., 7363872., 8209518., 8239164.,
      8268810., 8298456., 7271828., 7298072., 7324316., 7350560., 6328021.,
      6350890., 6373759., 6396628., 5442717., 5462238., 5481759., 5501280.,
      4808400., 4825536., 4842672., 4859808., 5608340., 5628248., 5648156.,
      5668064., 6413824., 6436480., 6459136., 6481792., 7224756., 7250136.,
      7275516., 7300896., 6394688., 6417152., 6439616., 6462080., 5559876.,
      5579448., 5599020., 5618592., 4780320., 4797024., 4813728., 4830432.,
      4137471., 4151898., 4166325., 4180752., 4822838., 4839596., 4856354.,
      4873112., 5512556., 5531624., 5550692., 5569760., 6206541., 6227898.,
      6249255., 6270612., 5488676., 5507576., 5526476., 5545376., 4767224.,
      4783688., 4800152., 4816616., 4097565., 4111614., 4125663., 4139712.,
      3448128., 3460008., 3471888., 3483768., 4016609., 4030406., 4044203.,
      4058000., 4588464., 4604160., 4619856., 4635552., 5163621., 5181198.,
      5198775., 5216352., 4561568., 4577120., 4592672., 4608224., 3956869.,
      3970414., 3983959., 3997504., 3400284., 3411840., 3423396., 3434952.};
  const std::array<int, 4> in_shape = {{3, 9, 9, 4}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 512.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, VALID3x9x9x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      192474., 192852., 193230., 193608., 193986., 194364., 194742., 195120.,
      195498., 195876., 196254., 196632., 197010., 197388., 197766., 198144.,
      198522., 198900., 199278., 199656., 200034., 200412., 200790., 201168.,
      201546., 201924., 202302., 202680., 206082., 206460., 206838., 207216.,
      207594., 207972., 208350., 208728., 209106., 209484., 209862., 210240.,
      210618., 210996., 211374., 211752., 212130., 212508., 212886., 213264.,
      213642., 214020., 214398., 214776., 215154., 215532., 215910., 216288.,
      219690., 220068., 220446., 220824., 221202., 221580., 221958., 222336.,
      222714., 223092., 223470., 223848., 224226., 224604., 224982., 225360.,
      225738., 226116., 226494., 226872., 227250., 227628., 228006., 228384.,
      228762., 229140., 229518., 229896., 233298., 233676., 234054., 234432.,
      234810., 235188., 235566., 235944., 236322., 236700., 237078., 237456.,
      237834., 238212., 238590., 238968., 239346., 239724., 240102., 240480.,
      240858., 241236., 241614., 241992., 242370., 242748., 243126., 243504.,
      246906., 247284., 247662., 248040., 248418., 248796., 249174., 249552.,
      249930., 250308., 250686., 251064., 251442., 251820., 252198., 252576.,
      252954., 253332., 253710., 254088., 254466., 254844., 255222., 255600.,
      255978., 256356., 256734., 257112., 260514., 260892., 261270., 261648.,
      262026., 262404., 262782., 263160., 263538., 263916., 264294., 264672.,
      265050., 265428., 265806., 266184., 266562., 266940., 267318., 267696.,
      268074., 268452., 268830., 269208., 269586., 269964., 270342., 270720.,
      274122., 274500., 274878., 275256., 275634., 276012., 276390., 276768.,
      277146., 277524., 277902., 278280., 278658., 279036., 279414., 279792.,
      280170., 280548., 280926., 281304., 281682., 282060., 282438., 282816.,
      283194., 283572., 283950., 284328.};
  const std::array<int, 4> in_shape = {{3, 9, 9, 4}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, SAME3x9x9x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      7843196.,  7868616.,  7872680.,  7898208.,  7902164.,  7927800.,
      7931648.,  7957392.,  9135932.,  9165670.,  9170204.,  9200068.,
      9204476.,  9234466.,  9238748.,  9268864.,  10440048., 10474176.,
      10479072., 10513344., 10518096., 10552512., 10557120., 10591680.,
      11755400., 11793990., 11799140., 11837892., 11842880., 11881794.,
      11886620., 11925696., 10368528., 10402720., 10407264., 10441600.,
      10446000., 10480480., 10484736., 10519360., 8971732.,  9001454.,
      9005500.,  9035348.,  9039268.,  9069242.,  9073036.,  9103136.,
      7721316.,  7747008.,  7750152.,  7775952.,  7778988.,  7804896.,
      7807824.,  7833840.,  8718380.,  8747574.,  8751644.,  8780964.,
      8784908.,  8814354.,  8818172.,  8847744.,  10164609., 10198792.,
      10203270., 10237600., 10241931., 10276408., 10280592., 10315216.,
      11623456., 11662712., 11667472., 11706896., 11711488., 11751080.,
      11755504., 11795264., 13094753., 13139166., 13144082., 13188684.,
      13193411., 13238202., 13242740., 13287720., 11570672., 11610088.,
      11614352., 11653936., 11658032., 11697784., 11701712., 11741632.,
      10035501., 10069836., 10073574., 10108056., 10111647., 10146276.,
      10149720., 10184496., 8636352.,  8666034.,  8668860.,  8698668.,
      8701368.,  8731302.,  8733876.,  8763936.,  9731696.,  9765312.,
      9768416.,  9802176.,  9805136.,  9839040.,  9841856.,  9875904.,
      11352928., 11392312., 11395600., 11435152., 11438272., 11477992.,
      11480944., 11520832., 12987584., 13032832., 13036160., 13081600.,
      13084736., 13130368., 13133312., 13179136., 14635472., 14686680.,
      14689904., 14741328., 14744336., 14795976., 14798768., 14850624.,
      12950080., 12995584., 12998272., 13043968., 13046464., 13092352.,
      13094656., 13140736., 11252864., 11292568., 11294864., 11334736.,
      11336864., 11376904., 11378864., 11419072., 9681744.,  9716064.,
      9717600.,  9752064.,  9753456.,  9788064.,  9789312.,  9824064.,
      10871480., 10910166., 10911332., 10950180., 10951184., 10990194.,
      10991036., 11030208., 12687281., 12732622., 12733586., 12779116.,
      12779891., 12825610., 12826196., 12872104., 14516880., 14568984.,
      14569584., 14621904., 14622288., 14674824., 14674992., 14727744.,
      16360061., 16419036., 16419110., 16478328., 16478159., 16537620.,
      16537208., 16596912., 14491200., 14543656., 14543472., 14596144.,
      14595744., 14648632., 14648016., 14701120., 12610213., 12656042.,
      12655762., 12701780., 12701311., 12747518., 12746860., 12793256.,
      10845828., 10885434., 10884708., 10924476., 10923588., 10963518.,
      10962468., 11002560., 9581072.,  9616800.,  9615200.,  9651072.,
      9649328.,  9685344.,  9683456.,  9719616.,  11174832., 11216680.,
      11214480., 11256496., 11254128., 11296312., 11293776., 11336128.,
      12779584., 12827648., 12824704., 12872960., 12869824., 12918272.,
      12914944., 12963584., 14395136., 14449512., 14445680., 14500272.,
      14496224., 14551032., 14546768., 14601792., 12741056., 12789376.,
      12785792., 12834304., 12830528., 12879232., 12875264., 12924160.,
      11077584., 11119752., 11116560., 11158896., 11155536., 11198040.,
      11194512., 11237184., 9524208.,  9560640.,  9557472.,  9594048.,
      9590736.,  9627456.,  9624000.,  9660864.,  8242820.,  8274942.,
      8271548.,  8303796.,  8300276.,  8332650.,  8329004.,  8361504.,
      9608077.,  9645676.,  9641446.,  9679192.,  9674815.,  9712708.,
      9708184.,  9746224.,  10981952., 11025112., 11019920., 11063248.,
      11057888., 11101384., 11095856., 11139520., 12364277., 12413082.,
      12406802., 12455796., 12449327., 12498510., 12491852., 12541224.,
      10934032., 10977352., 10971664., 11015152., 11009296., 11052952.,
      11046928., 11090752., 9496697.,  9534448.,  9529478.,  9567376.,
      9562259.,  9600304.,  9595040.,  9633232.,  8162520.,  8195130.,
      8190492.,  8223228.,  8218464.,  8251326.,  8246436.,  8279424.,
      6868388.,  6896256.,  6892040.,  6920016.,  6915692.,  6943776.,
      6939344.,  6967536.,  8000624.,  8033218.,  8028092.,  8060812.,
      8055560.,  8088406.,  8083028.,  8116000.,  9139536.,  9176928.,
      9170784.,  9208320.,  9202032.,  9239712.,  9233280.,  9271104.,
      10284980., 10327242., 10319972., 10362396., 10354964., 10397550.,
      10389956., 10432704., 9085680.,  9123136.,  9116640.,  9154240.,
      9147600.,  9185344.,  9178560.,  9216448.,  7881160.,  7913738.,
      7908124.,  7940828.,  7935088.,  7967918.,  7962052.,  7995008.,
      6772428.,  6800568.,  6795432.,  6823680.,  6818436.,  6846792.,
      6841440.,  6869904.};
  const std::array<int, 4> in_shape = {{3, 9, 9, 4}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 512.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, VALID3x9x9x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      375093., 384948., 375822., 385704., 376551., 386460., 377280., 387216.,
      378009., 387972., 378738., 388728., 379467., 389484., 380196., 390240.,
      380925., 390996., 381654., 391752., 382383., 392508., 383112., 393264.,
      383841., 394020., 384570., 394776., 385299., 395532., 386028., 396288.,
      386757., 397044., 387486., 397800., 388215., 398556., 388944., 399312.,
      389673., 400068., 390402., 400824., 391131., 401580., 391860., 402336.,
      392589., 403092., 393318., 403848., 394047., 404604., 394776., 405360.,
      401337., 412164., 402066., 412920., 402795., 413676., 403524., 414432.,
      404253., 415188., 404982., 415944., 405711., 416700., 406440., 417456.,
      407169., 418212., 407898., 418968., 408627., 419724., 409356., 420480.,
      410085., 421236., 410814., 421992., 411543., 422748., 412272., 423504.,
      413001., 424260., 413730., 425016., 414459., 425772., 415188., 426528.,
      415917., 427284., 416646., 428040., 417375., 428796., 418104., 429552.,
      418833., 430308., 419562., 431064., 420291., 431820., 421020., 432576.,
      427581., 439380., 428310., 440136., 429039., 440892., 429768., 441648.,
      430497., 442404., 431226., 443160., 431955., 443916., 432684., 444672.,
      433413., 445428., 434142., 446184., 434871., 446940., 435600., 447696.,
      436329., 448452., 437058., 449208., 437787., 449964., 438516., 450720.,
      439245., 451476., 439974., 452232., 440703., 452988., 441432., 453744.,
      442161., 454500., 442890., 455256., 443619., 456012., 444348., 456768.,
      445077., 457524., 445806., 458280., 446535., 459036., 447264., 459792.,
      453825., 466596., 454554., 467352., 455283., 468108., 456012., 468864.,
      456741., 469620., 457470., 470376., 458199., 471132., 458928., 471888.,
      459657., 472644., 460386., 473400., 461115., 474156., 461844., 474912.,
      462573., 475668., 463302., 476424., 464031., 477180., 464760., 477936.,
      465489., 478692., 466218., 479448., 466947., 480204., 467676., 480960.,
      468405., 481716., 469134., 482472., 469863., 483228., 470592., 483984.,
      471321., 484740., 472050., 485496., 472779., 486252., 473508., 487008.,
      480069., 493812., 480798., 494568., 481527., 495324., 482256., 496080.,
      482985., 496836., 483714., 497592., 484443., 498348., 485172., 499104.,
      485901., 499860., 486630., 500616., 487359., 501372., 488088., 502128.,
      488817., 502884., 489546., 503640., 490275., 504396., 491004., 505152.,
      491733., 505908., 492462., 506664., 493191., 507420., 493920., 508176.,
      494649., 508932., 495378., 509688., 496107., 510444., 496836., 511200.,
      497565., 511956., 498294., 512712., 499023., 513468., 499752., 514224.,
      506313., 521028., 507042., 521784., 507771., 522540., 508500., 523296.,
      509229., 524052., 509958., 524808., 510687., 525564., 511416., 526320.,
      512145., 527076., 512874., 527832., 513603., 528588., 514332., 529344.,
      515061., 530100., 515790., 530856., 516519., 531612., 517248., 532368.,
      517977., 533124., 518706., 533880., 519435., 534636., 520164., 535392.,
      520893., 536148., 521622., 536904., 522351., 537660., 523080., 538416.,
      523809., 539172., 524538., 539928., 525267., 540684., 525996., 541440.,
      532557., 548244., 533286., 549000., 534015., 549756., 534744., 550512.,
      535473., 551268., 536202., 552024., 536931., 552780., 537660., 553536.,
      538389., 554292., 539118., 555048., 539847., 555804., 540576., 556560.,
      541305., 557316., 542034., 558072., 542763., 558828., 543492., 559584.,
      544221., 560340., 544950., 561096., 545679., 561852., 546408., 562608.,
      547137., 563364., 547866., 564120., 548595., 564876., 549324., 565632.,
      550053., 566388., 550782., 567144., 551511., 567900., 552240., 568656.};
  const std::array<int, 4> in_shape = {{3, 9, 9, 4}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, SAME3x9x9x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1288364., 1301752., 1315140., 1328528., 1301144., 1314640., 1328136.,
      1341632., 1313924., 1327528., 1341132., 1354736., 1326704., 1340416.,
      1354128., 1367840., 1512014., 1527672., 1543330., 1558988., 1526928.,
      1542712., 1558496., 1574280., 1541842., 1557752., 1573662., 1589572.,
      1556756., 1572792., 1588828., 1604864., 1772944., 1790944., 1808944.,
      1826944., 1790176., 1808320., 1826464., 1844608., 1807408., 1825696.,
      1843984., 1862272., 1824640., 1843072., 1861504., 1879936., 2072914.,
      2093328., 2113742., 2134156., 2092648., 2113224., 2133800., 2154376.,
      2112382., 2133120., 2153858., 2174596., 2132116., 2153016., 2173916.,
      2194816., 1828240., 1846304., 1864368., 1882432., 1845664., 1863872.,
      1882080., 1900288., 1863088., 1881440., 1899792., 1918144., 1880512.,
      1899008., 1917504., 1936000., 1586318., 1601960., 1617602., 1633244.,
      1601504., 1617272., 1633040., 1648808., 1616690., 1632584., 1648478.,
      1664372., 1631876., 1647896., 1663916., 1679936., 1372268., 1385672.,
      1399076., 1412480., 1385288., 1398800., 1412312., 1425824., 1398308.,
      1411928., 1425548., 1439168., 1411328., 1425056., 1438784., 1452512.,
      1729358., 1744984., 1760610., 1776236., 1745072., 1760824., 1776576.,
      1792328., 1760786., 1776664., 1792542., 1808420., 1776500., 1792504.,
      1808508., 1824512., 2045307., 2063618., 2081929., 2100240., 2063602.,
      2082060., 2100518., 2118976., 2081897., 2100502., 2119107., 2137712.,
      2100192., 2118944., 2137696., 2156448., 2408168., 2429248., 2450328.,
      2471408., 2429216., 2450464., 2471712., 2492960., 2450264., 2471680.,
      2493096., 2514512., 2471312., 2492896., 2514480., 2536064., 2819653.,
      2843586., 2867519., 2891452., 2843626., 2867748., 2891870., 2915992.,
      2867599., 2891910., 2916221., 2940532., 2891572., 2916072., 2940572.,
      2965072., 2512104., 2533344., 2554584., 2575824., 2533248., 2554656.,
      2576064., 2597472., 2554392., 2575968., 2597544., 2619120., 2575536.,
      2597280., 2619024., 2640768., 2207035., 2225498., 2243961., 2262424.,
      2225434., 2244044., 2262654., 2281264., 2243833., 2262590., 2281347.,
      2300104., 2262232., 2281136., 2300040., 2318944., 1920398., 1936256.,
      1952114., 1967972., 1936136., 1952120., 1968104., 1984088., 1951874.,
      1967984., 1984094., 2000204., 1967612., 1983848., 2000084., 2016320.,
      2262416., 2279648., 2296880., 2314112., 2280416., 2297792., 2315168.,
      2332544., 2298416., 2315936., 2333456., 2350976., 2316416., 2334080.,
      2351744., 2369408., 2683624., 2703808., 2723992., 2744176., 2704544.,
      2724896., 2745248., 2765600., 2725464., 2745984., 2766504., 2787024.,
      2746384., 2767072., 2787760., 2808448., 3161536., 3184768., 3208000.,
      3231232., 3185536., 3208960., 3232384., 3255808., 3209536., 3233152.,
      3256768., 3280384., 3233536., 3257344., 3281152., 3304960., 3697816.,
      3724192., 3750568., 3776944., 3725056., 3751648., 3778240., 3804832.,
      3752296., 3779104., 3805912., 3832720., 3779536., 3806560., 3833584.,
      3860608., 3305920., 3329152., 3352384., 3375616., 3329920., 3353344.,
      3376768., 3400192., 3353920., 3377536., 3401152., 3424768., 3377920.,
      3401728., 3425536., 3449344., 2924520., 2944768., 2965016., 2985264.,
      2945376., 2965792., 2986208., 3006624., 2966232., 2986816., 3007400.,
      3027984., 2987088., 3007840., 3028592., 3049344., 2551952., 2569376.,
      2586800., 2604224., 2569760., 2587328., 2604896., 2622464., 2587568.,
      2605280., 2622992., 2640704., 2605376., 2623232., 2641088., 2658944.,
      2971730., 2990960., 3010190., 3029420., 2991368., 3010760., 3030152.,
      3049544., 3011006., 3030560., 3050114., 3069668., 3030644., 3050360.,
      3070076., 3089792., 3529029., 3551586., 3574143., 3596700., 3551818.,
      3574564., 3597310., 3620056., 3574607., 3597542., 3620477., 3643412.,
      3597396., 3620520., 3643644., 3666768., 4151960., 4177952., 4203944.,
      4229936., 4178048., 4204256., 4230464., 4256672., 4204136., 4230560.,
      4256984., 4283408., 4230224., 4256864., 4283504., 4310144., 4842139.,
      4871674., 4901209., 4930744., 4871674., 4901452., 4931230., 4961008.,
      4901209., 4931230., 4961251., 4991272., 4930744., 4961008., 4991272.,
      5021536., 4151960., 4178048., 4204136., 4230224., 4177952., 4204256.,
      4230560., 4256864., 4203944., 4230464., 4256984., 4283504., 4229936.,
      4256672., 4283408., 4310144., 3529029., 3551818., 3574607., 3597396.,
      3551586., 3574564., 3597542., 3620520., 3574143., 3597310., 3620477.,
      3643644., 3596700., 3620056., 3643412., 3666768., 2971730., 2991368.,
      3011006., 3030644., 2990960., 3010760., 3030560., 3050360., 3010190.,
      3030152., 3050114., 3070076., 3029420., 3049544., 3069668., 3089792.,
      2551952., 2569760., 2587568., 2605376., 2569376., 2587328., 2605280.,
      2623232., 2586800., 2604896., 2622992., 2641088., 2604224., 2622464.,
      2640704., 2658944., 2924520., 2945376., 2966232., 2987088., 2944768.,
      2965792., 2986816., 3007840., 2965016., 2986208., 3007400., 3028592.,
      2985264., 3006624., 3027984., 3049344., 3305920., 3329920., 3353920.,
      3377920., 3329152., 3353344., 3377536., 3401728., 3352384., 3376768.,
      3401152., 3425536., 3375616., 3400192., 3424768., 3449344., 3697816.,
      3725056., 3752296., 3779536., 3724192., 3751648., 3779104., 3806560.,
      3750568., 3778240., 3805912., 3833584., 3776944., 3804832., 3832720.,
      3860608., 3161536., 3185536., 3209536., 3233536., 3184768., 3208960.,
      3233152., 3257344., 3208000., 3232384., 3256768., 3281152., 3231232.,
      3255808., 3280384., 3304960., 2683624., 2704544., 2725464., 2746384.,
      2703808., 2724896., 2745984., 2767072., 2723992., 2745248., 2766504.,
      2787760., 2744176., 2765600., 2787024., 2808448., 2262416., 2280416.,
      2298416., 2316416., 2279648., 2297792., 2315936., 2334080., 2296880.,
      2315168., 2333456., 2351744., 2314112., 2332544., 2350976., 2369408.,
      1920398., 1936136., 1951874., 1967612., 1936256., 1952120., 1967984.,
      1983848., 1952114., 1968104., 1984094., 2000084., 1967972., 1984088.,
      2000204., 2016320., 2207035., 2225434., 2243833., 2262232., 2225498.,
      2244044., 2262590., 2281136., 2243961., 2262654., 2281347., 2300040.,
      2262424., 2281264., 2300104., 2318944., 2512104., 2533248., 2554392.,
      2575536., 2533344., 2554656., 2575968., 2597280., 2554584., 2576064.,
      2597544., 2619024., 2575824., 2597472., 2619120., 2640768., 2819653.,
      2843626., 2867599., 2891572., 2843586., 2867748., 2891910., 2916072.,
      2867519., 2891870., 2916221., 2940572., 2891452., 2915992., 2940532.,
      2965072., 2408168., 2429216., 2450264., 2471312., 2429248., 2450464.,
      2471680., 2492896., 2450328., 2471712., 2493096., 2514480., 2471408.,
      2492960., 2514512., 2536064., 2045307., 2063602., 2081897., 2100192.,
      2063618., 2082060., 2100502., 2118944., 2081929., 2100518., 2119107.,
      2137696., 2100240., 2118976., 2137712., 2156448., 1729358., 1745072.,
      1760786., 1776500., 1744984., 1760824., 1776664., 1792504., 1760610.,
      1776576., 1792542., 1808508., 1776236., 1792328., 1808420., 1824512.,
      1372268., 1385288., 1398308., 1411328., 1385672., 1398800., 1411928.,
      1425056., 1399076., 1412312., 1425548., 1438784., 1412480., 1425824.,
      1439168., 1452512., 1586318., 1601504., 1616690., 1631876., 1601960.,
      1617272., 1632584., 1647896., 1617602., 1633040., 1648478., 1663916.,
      1633244., 1648808., 1664372., 1679936., 1828240., 1845664., 1863088.,
      1880512., 1846304., 1863872., 1881440., 1899008., 1864368., 1882080.,
      1899792., 1917504., 1882432., 1900288., 1918144., 1936000., 2072914.,
      2092648., 2112382., 2132116., 2093328., 2113224., 2133120., 2153016.,
      2113742., 2133800., 2153858., 2173916., 2134156., 2154376., 2174596.,
      2194816., 1772944., 1790176., 1807408., 1824640., 1790944., 1808320.,
      1825696., 1843072., 1808944., 1826464., 1843984., 1861504., 1826944.,
      1844608., 1862272., 1879936., 1512014., 1526928., 1541842., 1556756.,
      1527672., 1542712., 1557752., 1572792., 1543330., 1558496., 1573662.,
      1588828., 1558988., 1574280., 1589572., 1604864., 1288364., 1301144.,
      1313924., 1326704., 1301752., 1314640., 1327528., 1340416., 1315140.,
      1328136., 1341132., 1354128., 1328528., 1341632., 1354736., 1367840.};
  const std::array<int, 4> in_shape = {{3, 9, 9, 4}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 256.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, VALID3x9x9x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      740331.,  750186.,  760041.,  769896.,  741762.,  751644.,  761526.,
      771408.,  743193.,  753102.,  763011.,  772920.,  744624.,  754560.,
      764496.,  774432.,  746055.,  756018.,  765981.,  775944.,  747486.,
      757476.,  767466.,  777456.,  748917.,  758934.,  768951.,  778968.,
      750348.,  760392.,  770436.,  780480.,  751779.,  761850.,  771921.,
      781992.,  753210.,  763308.,  773406.,  783504.,  754641.,  764766.,
      774891.,  785016.,  756072.,  766224.,  776376.,  786528.,  757503.,
      767682.,  777861.,  788040.,  758934.,  769140.,  779346.,  789552.,
      760365.,  770598.,  780831.,  791064.,  761796.,  772056.,  782316.,
      792576.,  763227.,  773514.,  783801.,  794088.,  764658.,  774972.,
      785286.,  795600.,  766089.,  776430.,  786771.,  797112.,  767520.,
      777888.,  788256.,  798624.,  768951.,  779346.,  789741.,  800136.,
      770382.,  780804.,  791226.,  801648.,  771813.,  782262.,  792711.,
      803160.,  773244.,  783720.,  794196.,  804672.,  774675.,  785178.,
      795681.,  806184.,  776106.,  786636.,  797166.,  807696.,  777537.,
      788094.,  798651.,  809208.,  778968.,  789552.,  800136.,  810720.,
      791847.,  802674.,  813501.,  824328.,  793278.,  804132.,  814986.,
      825840.,  794709.,  805590.,  816471.,  827352.,  796140.,  807048.,
      817956.,  828864.,  797571.,  808506.,  819441.,  830376.,  799002.,
      809964.,  820926.,  831888.,  800433.,  811422.,  822411.,  833400.,
      801864.,  812880.,  823896.,  834912.,  803295.,  814338.,  825381.,
      836424.,  804726.,  815796.,  826866.,  837936.,  806157.,  817254.,
      828351.,  839448.,  807588.,  818712.,  829836.,  840960.,  809019.,
      820170.,  831321.,  842472.,  810450.,  821628.,  832806.,  843984.,
      811881.,  823086.,  834291.,  845496.,  813312.,  824544.,  835776.,
      847008.,  814743.,  826002.,  837261.,  848520.,  816174.,  827460.,
      838746.,  850032.,  817605.,  828918.,  840231.,  851544.,  819036.,
      830376.,  841716.,  853056.,  820467.,  831834.,  843201.,  854568.,
      821898.,  833292.,  844686.,  856080.,  823329.,  834750.,  846171.,
      857592.,  824760.,  836208.,  847656.,  859104.,  826191.,  837666.,
      849141.,  860616.,  827622.,  839124.,  850626.,  862128.,  829053.,
      840582.,  852111.,  863640.,  830484.,  842040.,  853596.,  865152.,
      843363.,  855162.,  866961.,  878760.,  844794.,  856620.,  868446.,
      880272.,  846225.,  858078.,  869931.,  881784.,  847656.,  859536.,
      871416.,  883296.,  849087.,  860994.,  872901.,  884808.,  850518.,
      862452.,  874386.,  886320.,  851949.,  863910.,  875871.,  887832.,
      853380.,  865368.,  877356.,  889344.,  854811.,  866826.,  878841.,
      890856.,  856242.,  868284.,  880326.,  892368.,  857673.,  869742.,
      881811.,  893880.,  859104.,  871200.,  883296.,  895392.,  860535.,
      872658.,  884781.,  896904.,  861966.,  874116.,  886266.,  898416.,
      863397.,  875574.,  887751.,  899928.,  864828.,  877032.,  889236.,
      901440.,  866259.,  878490.,  890721.,  902952.,  867690.,  879948.,
      892206.,  904464.,  869121.,  881406.,  893691.,  905976.,  870552.,
      882864.,  895176.,  907488.,  871983.,  884322.,  896661.,  909000.,
      873414.,  885780.,  898146.,  910512.,  874845.,  887238.,  899631.,
      912024.,  876276.,  888696.,  901116.,  913536.,  877707.,  890154.,
      902601.,  915048.,  879138.,  891612.,  904086.,  916560.,  880569.,
      893070.,  905571.,  918072.,  882000.,  894528.,  907056.,  919584.,
      894879.,  907650.,  920421.,  933192.,  896310.,  909108.,  921906.,
      934704.,  897741.,  910566.,  923391.,  936216.,  899172.,  912024.,
      924876.,  937728.,  900603.,  913482.,  926361.,  939240.,  902034.,
      914940.,  927846.,  940752.,  903465.,  916398.,  929331.,  942264.,
      904896.,  917856.,  930816.,  943776.,  906327.,  919314.,  932301.,
      945288.,  907758.,  920772.,  933786.,  946800.,  909189.,  922230.,
      935271.,  948312.,  910620.,  923688.,  936756.,  949824.,  912051.,
      925146.,  938241.,  951336.,  913482.,  926604.,  939726.,  952848.,
      914913.,  928062.,  941211.,  954360.,  916344.,  929520.,  942696.,
      955872.,  917775.,  930978.,  944181.,  957384.,  919206.,  932436.,
      945666.,  958896.,  920637.,  933894.,  947151.,  960408.,  922068.,
      935352.,  948636.,  961920.,  923499.,  936810.,  950121.,  963432.,
      924930.,  938268.,  951606.,  964944.,  926361.,  939726.,  953091.,
      966456.,  927792.,  941184.,  954576.,  967968.,  929223.,  942642.,
      956061.,  969480.,  930654.,  944100.,  957546.,  970992.,  932085.,
      945558.,  959031.,  972504.,  933516.,  947016.,  960516.,  974016.,
      946395.,  960138.,  973881.,  987624.,  947826.,  961596.,  975366.,
      989136.,  949257.,  963054.,  976851.,  990648.,  950688.,  964512.,
      978336.,  992160.,  952119.,  965970.,  979821.,  993672.,  953550.,
      967428.,  981306.,  995184.,  954981.,  968886.,  982791.,  996696.,
      956412.,  970344.,  984276.,  998208.,  957843.,  971802.,  985761.,
      999720.,  959274.,  973260.,  987246.,  1001232., 960705.,  974718.,
      988731.,  1002744., 962136.,  976176.,  990216.,  1004256., 963567.,
      977634.,  991701.,  1005768., 964998.,  979092.,  993186.,  1007280.,
      966429.,  980550.,  994671.,  1008792., 967860.,  982008.,  996156.,
      1010304., 969291.,  983466.,  997641.,  1011816., 970722.,  984924.,
      999126.,  1013328., 972153.,  986382.,  1000611., 1014840., 973584.,
      987840.,  1002096., 1016352., 975015.,  989298.,  1003581., 1017864.,
      976446.,  990756.,  1005066., 1019376., 977877.,  992214.,  1006551.,
      1020888., 979308.,  993672.,  1008036., 1022400., 980739.,  995130.,
      1009521., 1023912., 982170.,  996588.,  1011006., 1025424., 983601.,
      998046.,  1012491., 1026936., 985032.,  999504.,  1013976., 1028448.,
      997911.,  1012626., 1027341., 1042056., 999342.,  1014084., 1028826.,
      1043568., 1000773., 1015542., 1030311., 1045080., 1002204., 1017000.,
      1031796., 1046592., 1003635., 1018458., 1033281., 1048104., 1005066.,
      1019916., 1034766., 1049616., 1006497., 1021374., 1036251., 1051128.,
      1007928., 1022832., 1037736., 1052640., 1009359., 1024290., 1039221.,
      1054152., 1010790., 1025748., 1040706., 1055664., 1012221., 1027206.,
      1042191., 1057176., 1013652., 1028664., 1043676., 1058688., 1015083.,
      1030122., 1045161., 1060200., 1016514., 1031580., 1046646., 1061712.,
      1017945., 1033038., 1048131., 1063224., 1019376., 1034496., 1049616.,
      1064736., 1020807., 1035954., 1051101., 1066248., 1022238., 1037412.,
      1052586., 1067760., 1023669., 1038870., 1054071., 1069272., 1025100.,
      1040328., 1055556., 1070784., 1026531., 1041786., 1057041., 1072296.,
      1027962., 1043244., 1058526., 1073808., 1029393., 1044702., 1060011.,
      1075320., 1030824., 1046160., 1061496., 1076832., 1032255., 1047618.,
      1062981., 1078344., 1033686., 1049076., 1064466., 1079856., 1035117.,
      1050534., 1065951., 1081368., 1036548., 1051992., 1067436., 1082880.,
      1049427., 1065114., 1080801., 1096488., 1050858., 1066572., 1082286.,
      1098000., 1052289., 1068030., 1083771., 1099512., 1053720., 1069488.,
      1085256., 1101024., 1055151., 1070946., 1086741., 1102536., 1056582.,
      1072404., 1088226., 1104048., 1058013., 1073862., 1089711., 1105560.,
      1059444., 1075320., 1091196., 1107072., 1060875., 1076778., 1092681.,
      1108584., 1062306., 1078236., 1094166., 1110096., 1063737., 1079694.,
      1095651., 1111608., 1065168., 1081152., 1097136., 1113120., 1066599.,
      1082610., 1098621., 1114632., 1068030., 1084068., 1100106., 1116144.,
      1069461., 1085526., 1101591., 1117656., 1070892., 1086984., 1103076.,
      1119168., 1072323., 1088442., 1104561., 1120680., 1073754., 1089900.,
      1106046., 1122192., 1075185., 1091358., 1107531., 1123704., 1076616.,
      1092816., 1109016., 1125216., 1078047., 1094274., 1110501., 1126728.,
      1079478., 1095732., 1111986., 1128240., 1080909., 1097190., 1113471.,
      1129752., 1082340., 1098648., 1114956., 1131264., 1083771., 1100106.,
      1116441., 1132776., 1085202., 1101564., 1117926., 1134288., 1086633.,
      1103022., 1119411., 1135800., 1088064., 1104480., 1120896., 1137312.};
  const std::array<int, 4> in_shape = {{3, 9, 9, 4}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, SAME3x9x10x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      2996742., 3427368., 3858570., 4290330., 3863430., 3436008., 3008082.,
      3532704., 4039476., 4546710., 5054385., 4550490., 4046196., 3541524.,
      4073496., 4656864., 5240520., 5824440., 5242680., 4660704., 4078536.,
      4617018., 5277132., 5937300., 6597495., 5937300., 5277132., 4617018.,
      4078536., 4660704., 5242680., 5824440., 5240520., 4656864., 4073496.,
      3541524., 4046196., 4550490., 5054385., 4546710., 4039476., 3532704.,
      3008082., 3436008., 3863430., 4290330., 3858570., 3427368., 2996742.};
  const std::array<int, 4> in_shape = {{3, 9, 10, 1}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, VALID3x9x10x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      95190.,  95856.,  96522.,  97188.,  97854.,  98520.,  99186.,
      101850., 102516., 103182., 103848., 104514., 105180., 105846.,
      108510., 109176., 109842., 110508., 111174., 111840., 112506.,
      115170., 115836., 116502., 117168., 117834., 118500., 119166.,
      121830., 122496., 123162., 123828., 124494., 125160., 125826.,
      128490., 129156., 129822., 130488., 131154., 131820., 132486.,
      135150., 135816., 136482., 137148., 137814., 138480., 139146.};
  const std::array<int, 4> in_shape = {{3, 9, 10, 1}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, SAME3x9x10x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5978490.,  5993484.,  6837528.,  6854736.,  7697700.,  7717140.,
      8558970.,  8580660.,  7707258.,  7726860.,  6854520.,  6872016.,
      6000792.,  6016164.,  7047180.,  7065408.,  8058036.,  8078952.,
      9069795.,  9093420.,  10082415., 10108770., 9077166.,  9100980.,
      8071140.,  8092392.,  7064379.,  7083048.,  8125320.,  8146992.,
      9288864.,  9313728.,  10452960., 10481040., 11617560., 11648880.,
      10457064., 10485360., 9296160.,  9321408.,  8134896.,  8157072.,
      9208710.,  9234036.,  10525212., 10554264., 11841795., 11874600.,
      13158405., 13194990., 11841552., 11874600., 10524780., 10554264.,
      9208143.,  9234036.,  8133720.,  8157072.,  9294624.,  9321408.,
      10455120., 10485360., 11615160., 11648880., 10450584., 10481040.,
      9286560.,  9313728.,  8123136.,  8146992.,  7061880.,  7083048.,
      8068116.,  8092392.,  9073575.,  9100980.,  10078215., 10108770.,
      9065826.,  9093420.,  8054340.,  8078952.,  7043799.,  7065408.,
      5997390.,  6016164.,  6850488.,  6872016.,  7702560.,  7726860.,
      8553570.,  8580660.,  7692678.,  7717140.,  6832920.,  6854736.,
      5974332.,  5993484.};
  const std::array<int, 4> in_shape = {{3, 9, 10, 1}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, VALID3x9x10x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      186690., 190380., 187986., 191712., 189282., 193044., 190578., 194376.,
      191874., 195708., 193170., 197040., 194466., 198372., 199650., 203700.,
      200946., 205032., 202242., 206364., 203538., 207696., 204834., 209028.,
      206130., 210360., 207426., 211692., 212610., 217020., 213906., 218352.,
      215202., 219684., 216498., 221016., 217794., 222348., 219090., 223680.,
      220386., 225012., 225570., 230340., 226866., 231672., 228162., 233004.,
      229458., 234336., 230754., 235668., 232050., 237000., 233346., 238332.,
      238530., 243660., 239826., 244992., 241122., 246324., 242418., 247656.,
      243714., 248988., 245010., 250320., 246306., 251652., 251490., 256980.,
      252786., 258312., 254082., 259644., 255378., 260976., 256674., 262308.,
      257970., 263640., 259266., 264972., 264450., 270300., 265746., 271632.,
      267042., 272964., 268338., 274296., 269634., 275628., 270930., 276960.,
      272226., 278292.};
  const std::array<int, 4> in_shape = {{3, 9, 10, 1}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, SAME3x9x10x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      3826274., 3841268., 3856262., 3871256., 4435192., 4452400., 4469608.,
      4486816., 5040216., 5059656., 5079096., 5098536., 5641274., 5662964.,
      5684654., 5706344., 5167714., 5187316., 5206918., 5226520., 4699288.,
      4716784., 4734280., 4751776., 4184356., 4199728., 4215100., 4230472.,
      4840164., 4858392., 4876620., 4894848., 5594548., 5615464., 5636380.,
      5657296., 6344061., 6367686., 6391311., 6414936., 7088619., 7114974.,
      7141329., 7167684., 6472790., 6496604., 6520418., 6544232., 5863108.,
      5884360., 5905612., 5926864., 5202825., 5221494., 5240163., 5258832.,
      5836904., 5858576., 5880248., 5901920., 6733344., 6758208., 6783072.,
      6807936., 7623696., 7651776., 7679856., 7707936., 8507864., 8539184.,
      8570504., 8601824., 7751496., 7779792., 7808088., 7836384., 7002528.,
      7027776., 7053024., 7078272., 6199104., 6221280., 6243456., 6265632.,
      6808094., 6833420., 6858746., 6884072., 7841980., 7871032., 7900084.,
      7929136., 8868321., 8901126., 8933931., 8966736., 9887009., 9923594.,
      9960179., 9996764., 8993032., 9026080., 9059128., 9092176., 8107948.,
      8137432., 8166916., 8196400., 7164793., 7190686., 7216579., 7242472.,
      6715256., 6738608., 6761960., 6785312., 7742368., 7769152., 7795936.,
      7822720., 8762496., 8792736., 8822976., 8853216., 9775544., 9809264.,
      9842984., 9876704., 8902712., 8933168., 8963624., 8994080., 8038176.,
      8065344., 8092512., 8119680., 7109840., 7133696., 7157552., 7181408.,
      6318656., 6339824., 6360992., 6382160., 7215956., 7240232., 7264508.,
      7288784., 8106561., 8133966., 8161371., 8188776., 8990387., 9020942.,
      9051497., 9082052., 8120058., 8147652., 8175246., 8202840., 7257188.,
      7281800., 7306412., 7331024., 6324549., 6346158., 6367767., 6389376.,
      5464902., 5483676., 5502450., 5521224., 6243672., 6265200., 6286728.,
      6308256., 7016276., 7040576., 7064876., 7089176., 7782642., 7809732.,
      7836822., 7863912., 7039870., 7064332., 7088794., 7113256., 6303992.,
      6325808., 6347624., 6369440., 5492648., 5511800., 5530952., 5550104.};
  const std::array<int, 4> in_shape = {{3, 9, 10, 1}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 512.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, VALID3x9x10x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      369690., 373380., 377070., 380760., 372246., 375972., 379698., 383424.,
      374802., 378564., 382326., 386088., 377358., 381156., 384954., 388752.,
      379914., 383748., 387582., 391416., 382470., 386340., 390210., 394080.,
      385026., 388932., 392838., 396744., 395250., 399300., 403350., 407400.,
      397806., 401892., 405978., 410064., 400362., 404484., 408606., 412728.,
      402918., 407076., 411234., 415392., 405474., 409668., 413862., 418056.,
      408030., 412260., 416490., 420720., 410586., 414852., 419118., 423384.,
      420810., 425220., 429630., 434040., 423366., 427812., 432258., 436704.,
      425922., 430404., 434886., 439368., 428478., 432996., 437514., 442032.,
      431034., 435588., 440142., 444696., 433590., 438180., 442770., 447360.,
      436146., 440772., 445398., 450024., 446370., 451140., 455910., 460680.,
      448926., 453732., 458538., 463344., 451482., 456324., 461166., 466008.,
      454038., 458916., 463794., 468672., 456594., 461508., 466422., 471336.,
      459150., 464100., 469050., 474000., 461706., 466692., 471678., 476664.,
      471930., 477060., 482190., 487320., 474486., 479652., 484818., 489984.,
      477042., 482244., 487446., 492648., 479598., 484836., 490074., 495312.,
      482154., 487428., 492702., 497976., 484710., 490020., 495330., 500640.,
      487266., 492612., 497958., 503304., 497490., 502980., 508470., 513960.,
      500046., 505572., 511098., 516624., 502602., 508164., 513726., 519288.,
      505158., 510756., 516354., 521952., 507714., 513348., 518982., 524616.,
      510270., 515940., 521610., 527280., 512826., 518532., 524238., 529944.,
      523050., 528900., 534750., 540600., 525606., 531492., 537378., 543264.,
      528162., 534084., 540006., 545928., 530718., 536676., 542634., 548592.,
      533274., 539268., 545262., 551256., 535830., 541860., 547890., 553920.,
      538386., 544452., 550518., 556584.};
  const std::array<int, 4> in_shape = {{3, 9, 10, 1}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, SAME3x9x10x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5974332.,  5993484.,  6832920.,  6854736.,  7692678.,  7717140.,
      8553570.,  8580660.,  7702560.,  7726860.,  6850488.,  6872016.,
      5997390.,  6016164.,  7043799.,  7065408.,  8054340.,  8078952.,
      9065826.,  9093420.,  10078215., 10108770., 9073575.,  9100980.,
      8068116.,  8092392.,  7061880.,  7083048.,  8123136.,  8146992.,
      9286560.,  9313728.,  10450584., 10481040., 11615160., 11648880.,
      10455120., 10485360., 9294624.,  9321408.,  8133720.,  8157072.,
      9208143.,  9234036.,  10524780., 10554264., 11841552., 11874600.,
      13158405., 13194990., 11841795., 11874600., 10525212., 10554264.,
      9208710.,  9234036.,  8134896.,  8157072.,  9296160.,  9321408.,
      10457064., 10485360., 11617560., 11648880., 10452960., 10481040.,
      9288864.,  9313728.,  8125320.,  8146992.,  7064379.,  7083048.,
      8071140.,  8092392.,  9077166.,  9100980.,  10082415., 10108770.,
      9069795.,  9093420.,  8058036.,  8078952.,  7047180.,  7065408.,
      6000792.,  6016164.,  6854520.,  6872016.,  7707258.,  7726860.,
      8558970.,  8580660.,  7697700.,  7717140.,  6837528.,  6854736.,
      5978490.,  5993484.};
  const std::array<int, 4> in_shape = {{3, 9, 10, 2}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, VALID3x9x10x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      189714., 190380., 191046., 191712., 192378., 193044., 193710., 194376.,
      195042., 195708., 196374., 197040., 197706., 198372., 203034., 203700.,
      204366., 205032., 205698., 206364., 207030., 207696., 208362., 209028.,
      209694., 210360., 211026., 211692., 216354., 217020., 217686., 218352.,
      219018., 219684., 220350., 221016., 221682., 222348., 223014., 223680.,
      224346., 225012., 229674., 230340., 231006., 231672., 232338., 233004.,
      233670., 234336., 235002., 235668., 236334., 237000., 237666., 238332.,
      242994., 243660., 244326., 244992., 245658., 246324., 246990., 247656.,
      248322., 248988., 249654., 250320., 250986., 251652., 256314., 256980.,
      257646., 258312., 258978., 259644., 260310., 260976., 261642., 262308.,
      262974., 263640., 264306., 264972., 269634., 270300., 270966., 271632.,
      272298., 272964., 273630., 274296., 274962., 275628., 276294., 276960.,
      277626., 278292.};
  const std::array<int, 4> in_shape = {{3, 9, 10, 2}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, SAME3x9x10x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1794514., 1810040., 1809652., 1825304., 2092112., 2110000., 2109488.,
      2127520., 2373838., 2393868., 2393416., 2413608., 2656260., 2678468.,
      2678004., 2700392., 2458046., 2478144., 2477812., 2498072., 2260816.,
      2278768., 2278640., 2296736., 2013186., 2028956., 2028848., 2044744.,
      2425049., 2443438., 2443288., 2461824., 2817480., 2838664., 2838376.,
      2859728., 3199215., 3222980., 3222726., 3246680., 3581690., 3608078.,
      3607774., 3634372., 3299071., 3322958., 3322716., 3346792., 3017416.,
      3038760., 3038664., 3060176., 2680233., 2698992., 2698870., 2717776.,
      3103832., 3125248., 3124752., 3146336., 3591616., 3616064., 3615552.,
      3640192., 4074152., 4101424., 4101056., 4128544., 4557744., 4587888.,
      4587568., 4617952., 4184168., 4211360., 4211152., 4238560., 3811776.,
      3835968., 3835968., 3860352., 3378968., 3400112., 3400160., 3421472.,
      3803775., 3827102., 3826956., 3850472., 4400824., 4427480., 4427320.,
      4454192., 4997833., 5027616., 5027590., 5057616., 5595974., 5628938.,
      5628938., 5662172., 4997833., 5027590., 5027616., 5057616., 4400824.,
      4427320., 4427480., 4454192., 3803775., 3826956., 3827102., 3850472.,
      3378968., 3400160., 3400112., 3421472., 3811776., 3835968., 3835968.,
      3860352., 4184168., 4211152., 4211360., 4238560., 4557744., 4587568.,
      4587888., 4617952., 4074152., 4101056., 4101424., 4128544., 3591616.,
      3615552., 3616064., 3640192., 3103832., 3124752., 3125248., 3146336.,
      2680233., 2698870., 2698992., 2717776., 3017416., 3038664., 3038760.,
      3060176., 3299071., 3322716., 3322958., 3346792., 3581690., 3607774.,
      3608078., 3634372., 3199215., 3222726., 3222980., 3246680., 2817480.,
      2838376., 2838664., 2859728., 2425049., 2443288., 2443438., 2461824.,
      2013186., 2028848., 2028956., 2044744., 2260816., 2278640., 2278768.,
      2296736., 2458046., 2477812., 2478144., 2498072., 2656260., 2678004.,
      2678468., 2700392., 2373838., 2393416., 2393868., 2413608., 2092112.,
      2109488., 2110000., 2127520., 1794514., 1809652., 1810040., 1825304.};
  const std::array<int, 4> in_shape = {{3, 9, 10, 2}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 256.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, VALID3x9x10x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      372084., 379428., 373380., 380760., 374676., 382092., 375972., 383424.,
      377268., 384756., 378564., 386088., 379860., 387420., 381156., 388752.,
      382452., 390084., 383748., 391416., 385044., 392748., 386340., 394080.,
      387636., 395412., 388932., 396744., 398004., 406068., 399300., 407400.,
      400596., 408732., 401892., 410064., 403188., 411396., 404484., 412728.,
      405780., 414060., 407076., 415392., 408372., 416724., 409668., 418056.,
      410964., 419388., 412260., 420720., 413556., 422052., 414852., 423384.,
      423924., 432708., 425220., 434040., 426516., 435372., 427812., 436704.,
      429108., 438036., 430404., 439368., 431700., 440700., 432996., 442032.,
      434292., 443364., 435588., 444696., 436884., 446028., 438180., 447360.,
      439476., 448692., 440772., 450024., 449844., 459348., 451140., 460680.,
      452436., 462012., 453732., 463344., 455028., 464676., 456324., 466008.,
      457620., 467340., 458916., 468672., 460212., 470004., 461508., 471336.,
      462804., 472668., 464100., 474000., 465396., 475332., 466692., 476664.,
      475764., 485988., 477060., 487320., 478356., 488652., 479652., 489984.,
      480948., 491316., 482244., 492648., 483540., 493980., 484836., 495312.,
      486132., 496644., 487428., 497976., 488724., 499308., 490020., 500640.,
      491316., 501972., 492612., 503304., 501684., 512628., 502980., 513960.,
      504276., 515292., 505572., 516624., 506868., 517956., 508164., 519288.,
      509460., 520620., 510756., 521952., 512052., 523284., 513348., 524616.,
      514644., 525948., 515940., 527280., 517236., 528612., 518532., 529944.,
      527604., 539268., 528900., 540600., 530196., 541932., 531492., 543264.,
      532788., 544596., 534084., 545928., 535380., 547260., 536676., 548592.,
      537972., 549924., 539268., 551256., 540564., 552588., 541860., 553920.,
      543156., 555252., 544452., 556584.};
  const std::array<int, 4> in_shape = {{3, 9, 10, 2}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, SAME3x9x10x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1730302., 1745828., 1761354., 1776880., 1746116., 1761768., 1777420.,
      1793072., 2015936., 2033824., 2051712., 2069600., 2034160., 2052192.,
      2070224., 2088256., 2265950., 2285980., 2306010., 2326040., 2286512.,
      2306704., 2326896., 2347088., 2513224., 2535432., 2557640., 2579848.,
      2536052., 2558440., 2580828., 2603216., 2314234., 2334332., 2354430.,
      2374528., 2334916., 2355176., 2375436., 2395696., 2120832., 2138784.,
      2156736., 2174688., 2139440., 2157536., 2175632., 2193728., 1881706.,
      1897476., 1913246., 1929016., 1898056., 1913952., 1929848., 1945744.,
      2167773., 2186162., 2204551., 2222940., 2186184., 2204720., 2223256.,
      2241792., 2521296., 2542480., 2563664., 2584848., 2542440., 2563792.,
      2585144., 2606496., 2848521., 2872286., 2896051., 2919816., 2872314.,
      2896268., 2920222., 2944176., 3172064., 3198452., 3224840., 3251228.,
      3198422., 3225020., 3251618., 3278216., 2913711., 2937598., 2961485.,
      2985372., 2937516., 2961592., 2985668., 3009744., 2661936., 2683280.,
      2704624., 2725968., 2683272., 2704784., 2726296., 2747808., 2360331.,
      2379090., 2397849., 2416608., 2379026., 2397932., 2416838., 2435744.,
      2629896., 2651312., 2672728., 2694144., 2650064., 2671648., 2693232.,
      2714816., 3042304., 3066752., 3091200., 3115648., 3065408., 3090048.,
      3114688., 3139328., 3465160., 3492432., 3519704., 3546976., 3491360.,
      3518848., 3546336., 3573824., 3884448., 3914592., 3944736., 3974880.,
      3913648., 3944032., 3974416., 4004800., 3564952., 3592144., 3619336.,
      3646528., 3591312., 3618720., 3646128., 3673536., 3253504., 3277696.,
      3301888., 3326080., 3277120., 3301504., 3325888., 3350272., 2888600.,
      2909744., 2930888., 2952032., 2909312., 2930624., 2951936., 2973248.,
      3262687., 3286014., 3309341., 3332668., 3285564., 3309080., 3332596.,
      3356112., 3781968., 3808624., 3835280., 3861936., 3808120., 3834992.,
      3861864., 3888736., 4326715., 4356498., 4386281., 4416064., 4356290.,
      4386316., 4416342., 4446368., 4867528., 4900492., 4933456., 4966420.,
      4900418., 4933652., 4966886., 5000120., 4332885., 4362642., 4392399.,
      4422156., 4362512., 4392512., 4422512., 4452512., 3806704., 3833200.,
      3859696., 3886192., 3833176., 3859888., 3886600., 3913312., 3287921.,
      3311102., 3334283., 3357464., 3311090., 3334460., 3357830., 3381200.,
      2874216., 2895408., 2916600., 2937792., 2894832., 2916192., 2937552.,
      2958912., 3245312., 3269504., 3293696., 3317888., 3268928., 3293312.,
      3317696., 3342080., 3592296., 3619280., 3646264., 3673248., 3619072.,
      3646272., 3673472., 3700672., 3935968., 3965792., 3995616., 4025440.,
      3965808., 3995872., 4025936., 4056000., 3514168., 3541072., 3567976.,
      3594880., 3541104., 3568224., 3595344., 3622464., 3100160., 3124096.,
      3148032., 3171968., 3124288., 3148416., 3172544., 3196672., 2687736.,
      2708656., 2729576., 2750496., 2708896., 2729984., 2751072., 2772160.,
      2325637., 2344274., 2362911., 2381548., 2344064., 2362848., 2381632.,
      2400416., 2634384., 2655632., 2676880., 2698128., 2655400., 2676816.,
      2698232., 2719648., 2934945., 2958590., 2982235., 3005880., 2958722.,
      2982556., 3006390., 3030224., 3232784., 3258868., 3284952., 3311036.,
      3259238., 3285532., 3311826., 3338120., 2894855., 2918366., 2941877.,
      2965388., 2918644., 2942344., 2966044., 2989744., 2563568., 2584464.,
      2605360., 2626256., 2584776., 2605840., 2626904., 2647968., 2227571.,
      2245810., 2264049., 2282288., 2246026., 2264412., 2282798., 2301184.,
      1884630., 1900292., 1915954., 1931616., 1900428., 1916216., 1932004.,
      1947792., 2108672., 2126496., 2144320., 2162144., 2126512., 2144480.,
      2162448., 2180416., 2340422., 2360188., 2379954., 2399720., 2360488.,
      2380416., 2400344., 2420272., 2570008., 2591752., 2613496., 2635240.,
      2592228., 2614152., 2636076., 2658000., 2296098., 2315676., 2335254.,
      2354832., 2316028., 2335768., 2355508., 2375248., 2027712., 2045088.,
      2062464., 2079840., 2045424., 2062944., 2080464., 2097984., 1748354.,
      1763492., 1778630., 1793768., 1763664., 1778928., 1794192., 1809456.};
  const std::array<int, 4> in_shape = {{3, 9, 10, 2}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 256.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, VALID3x9x10x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      736824.,  744168.,  751512.,  758856.,  739380.,  746760.,  754140.,
      761520.,  741936.,  749352.,  756768.,  764184.,  744492.,  751944.,
      759396.,  766848.,  747048.,  754536.,  762024.,  769512.,  749604.,
      757128.,  764652.,  772176.,  752160.,  759720.,  767280.,  774840.,
      754716.,  762312.,  769908.,  777504.,  757272.,  764904.,  772536.,
      780168.,  759828.,  767496.,  775164.,  782832.,  762384.,  770088.,
      777792.,  785496.,  764940.,  772680.,  780420.,  788160.,  767496.,
      775272.,  783048.,  790824.,  770052.,  777864.,  785676.,  793488.,
      787944.,  796008.,  804072.,  812136.,  790500.,  798600.,  806700.,
      814800.,  793056.,  801192.,  809328.,  817464.,  795612.,  803784.,
      811956.,  820128.,  798168.,  806376.,  814584.,  822792.,  800724.,
      808968.,  817212.,  825456.,  803280.,  811560.,  819840.,  828120.,
      805836.,  814152.,  822468.,  830784.,  808392.,  816744.,  825096.,
      833448.,  810948.,  819336.,  827724.,  836112.,  813504.,  821928.,
      830352.,  838776.,  816060.,  824520.,  832980.,  841440.,  818616.,
      827112.,  835608.,  844104.,  821172.,  829704.,  838236.,  846768.,
      839064.,  847848.,  856632.,  865416.,  841620.,  850440.,  859260.,
      868080.,  844176.,  853032.,  861888.,  870744.,  846732.,  855624.,
      864516.,  873408.,  849288.,  858216.,  867144.,  876072.,  851844.,
      860808.,  869772.,  878736.,  854400.,  863400.,  872400.,  881400.,
      856956.,  865992.,  875028.,  884064.,  859512.,  868584.,  877656.,
      886728.,  862068.,  871176.,  880284.,  889392.,  864624.,  873768.,
      882912.,  892056.,  867180.,  876360.,  885540.,  894720.,  869736.,
      878952.,  888168.,  897384.,  872292.,  881544.,  890796.,  900048.,
      890184.,  899688.,  909192.,  918696.,  892740.,  902280.,  911820.,
      921360.,  895296.,  904872.,  914448.,  924024.,  897852.,  907464.,
      917076.,  926688.,  900408.,  910056.,  919704.,  929352.,  902964.,
      912648.,  922332.,  932016.,  905520.,  915240.,  924960.,  934680.,
      908076.,  917832.,  927588.,  937344.,  910632.,  920424.,  930216.,
      940008.,  913188.,  923016.,  932844.,  942672.,  915744.,  925608.,
      935472.,  945336.,  918300.,  928200.,  938100.,  948000.,  920856.,
      930792.,  940728.,  950664.,  923412.,  933384.,  943356.,  953328.,
      941304.,  951528.,  961752.,  971976.,  943860.,  954120.,  964380.,
      974640.,  946416.,  956712.,  967008.,  977304.,  948972.,  959304.,
      969636.,  979968.,  951528.,  961896.,  972264.,  982632.,  954084.,
      964488.,  974892.,  985296.,  956640.,  967080.,  977520.,  987960.,
      959196.,  969672.,  980148.,  990624.,  961752.,  972264.,  982776.,
      993288.,  964308.,  974856.,  985404.,  995952.,  966864.,  977448.,
      988032.,  998616.,  969420.,  980040.,  990660.,  1001280., 971976.,
      982632.,  993288.,  1003944., 974532.,  985224.,  995916.,  1006608.,
      992424.,  1003368., 1014312., 1025256., 994980.,  1005960., 1016940.,
      1027920., 997536.,  1008552., 1019568., 1030584., 1000092., 1011144.,
      1022196., 1033248., 1002648., 1013736., 1024824., 1035912., 1005204.,
      1016328., 1027452., 1038576., 1007760., 1018920., 1030080., 1041240.,
      1010316., 1021512., 1032708., 1043904., 1012872., 1024104., 1035336.,
      1046568., 1015428., 1026696., 1037964., 1049232., 1017984., 1029288.,
      1040592., 1051896., 1020540., 1031880., 1043220., 1054560., 1023096.,
      1034472., 1045848., 1057224., 1025652., 1037064., 1048476., 1059888.,
      1043544., 1055208., 1066872., 1078536., 1046100., 1057800., 1069500.,
      1081200., 1048656., 1060392., 1072128., 1083864., 1051212., 1062984.,
      1074756., 1086528., 1053768., 1065576., 1077384., 1089192., 1056324.,
      1068168., 1080012., 1091856., 1058880., 1070760., 1082640., 1094520.,
      1061436., 1073352., 1085268., 1097184., 1063992., 1075944., 1087896.,
      1099848., 1066548., 1078536., 1090524., 1102512., 1069104., 1081128.,
      1093152., 1105176., 1071660., 1083720., 1095780., 1107840., 1074216.,
      1086312., 1098408., 1110504., 1076772., 1088904., 1101036., 1113168.};
  const std::array<int, 4> in_shape = {{3, 9, 10, 2}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, SAME3x9x10x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5492648., 5511800., 5530952., 5550104., 6303992., 6325808., 6347624.,
      6369440., 7039870., 7064332., 7088794., 7113256., 7782642., 7809732.,
      7836822., 7863912., 7016276., 7040576., 7064876., 7089176., 6243672.,
      6265200., 6286728., 6308256., 5464902., 5483676., 5502450., 5521224.,
      6324549., 6346158., 6367767., 6389376., 7257188., 7281800., 7306412.,
      7331024., 8120058., 8147652., 8175246., 8202840., 8990387., 9020942.,
      9051497., 9082052., 8106561., 8133966., 8161371., 8188776., 7215956.,
      7240232., 7264508., 7288784., 6318656., 6339824., 6360992., 6382160.,
      7109840., 7133696., 7157552., 7181408., 8038176., 8065344., 8092512.,
      8119680., 8902712., 8933168., 8963624., 8994080., 9775544., 9809264.,
      9842984., 9876704., 8762496., 8792736., 8822976., 8853216., 7742368.,
      7769152., 7795936., 7822720., 6715256., 6738608., 6761960., 6785312.,
      7164793., 7190686., 7216579., 7242472., 8107948., 8137432., 8166916.,
      8196400., 8993032., 9026080., 9059128., 9092176., 9887009., 9923594.,
      9960179., 9996764., 8868321., 8901126., 8933931., 8966736., 7841980.,
      7871032., 7900084., 7929136., 6808094., 6833420., 6858746., 6884072.,
      6199104., 6221280., 6243456., 6265632., 7002528., 7027776., 7053024.,
      7078272., 7751496., 7779792., 7808088., 7836384., 8507864., 8539184.,
      8570504., 8601824., 7623696., 7651776., 7679856., 7707936., 6733344.,
      6758208., 6783072., 6807936., 5836904., 5858576., 5880248., 5901920.,
      5202825., 5221494., 5240163., 5258832., 5863108., 5884360., 5905612.,
      5926864., 6472790., 6496604., 6520418., 6544232., 7088619., 7114974.,
      7141329., 7167684., 6344061., 6367686., 6391311., 6414936., 5594548.,
      5615464., 5636380., 5657296., 4840164., 4858392., 4876620., 4894848.,
      4184356., 4199728., 4215100., 4230472., 4699288., 4716784., 4734280.,
      4751776., 5167714., 5187316., 5206918., 5226520., 5641274., 5662964.,
      5684654., 5706344., 5040216., 5059656., 5079096., 5098536., 4435192.,
      4452400., 4469608., 4486816., 3826274., 3841268., 3856262., 3871256.};
  const std::array<int, 4> in_shape = {{3, 9, 10, 4}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 512.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, VALID3x9x10x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      378762., 379428., 380094., 380760., 381426., 382092., 382758., 383424.,
      384090., 384756., 385422., 386088., 386754., 387420., 388086., 388752.,
      389418., 390084., 390750., 391416., 392082., 392748., 393414., 394080.,
      394746., 395412., 396078., 396744., 405402., 406068., 406734., 407400.,
      408066., 408732., 409398., 410064., 410730., 411396., 412062., 412728.,
      413394., 414060., 414726., 415392., 416058., 416724., 417390., 418056.,
      418722., 419388., 420054., 420720., 421386., 422052., 422718., 423384.,
      432042., 432708., 433374., 434040., 434706., 435372., 436038., 436704.,
      437370., 438036., 438702., 439368., 440034., 440700., 441366., 442032.,
      442698., 443364., 444030., 444696., 445362., 446028., 446694., 447360.,
      448026., 448692., 449358., 450024., 458682., 459348., 460014., 460680.,
      461346., 462012., 462678., 463344., 464010., 464676., 465342., 466008.,
      466674., 467340., 468006., 468672., 469338., 470004., 470670., 471336.,
      472002., 472668., 473334., 474000., 474666., 475332., 475998., 476664.,
      485322., 485988., 486654., 487320., 487986., 488652., 489318., 489984.,
      490650., 491316., 491982., 492648., 493314., 493980., 494646., 495312.,
      495978., 496644., 497310., 497976., 498642., 499308., 499974., 500640.,
      501306., 501972., 502638., 503304., 511962., 512628., 513294., 513960.,
      514626., 515292., 515958., 516624., 517290., 517956., 518622., 519288.,
      519954., 520620., 521286., 521952., 522618., 523284., 523950., 524616.,
      525282., 525948., 526614., 527280., 527946., 528612., 529278., 529944.,
      538602., 539268., 539934., 540600., 541266., 541932., 542598., 543264.,
      543930., 544596., 545262., 545928., 546594., 547260., 547926., 548592.,
      549258., 549924., 550590., 551256., 551922., 552588., 553254., 553920.,
      554586., 555252., 555918., 556584.};
  const std::array<int, 4> in_shape = {{3, 9, 10, 4}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, SAME3x9x10x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1748354., 1763664., 1763492., 1778928., 1778630., 1794192., 1793768.,
      1809456., 2027712., 2045424., 2045088., 2062944., 2062464., 2080464.,
      2079840., 2097984., 2296098., 2316028., 2315676., 2335768., 2335254.,
      2355508., 2354832., 2375248., 2570008., 2592228., 2591752., 2614152.,
      2613496., 2636076., 2635240., 2658000., 2340422., 2360488., 2360188.,
      2380416., 2379954., 2400344., 2399720., 2420272., 2108672., 2126512.,
      2126496., 2144480., 2144320., 2162448., 2162144., 2180416., 1884630.,
      1900428., 1900292., 1916216., 1915954., 1932004., 1931616., 1947792.,
      2227571., 2246026., 2245810., 2264412., 2264049., 2282798., 2282288.,
      2301184., 2563568., 2584776., 2584464., 2605840., 2605360., 2626904.,
      2626256., 2647968., 2894855., 2918644., 2918366., 2942344., 2941877.,
      2966044., 2965388., 2989744., 3232784., 3259238., 3258868., 3285532.,
      3284952., 3311826., 3311036., 3338120., 2934945., 2958722., 2958590.,
      2982556., 2982235., 3006390., 3005880., 3030224., 2634384., 2655400.,
      2655632., 2676816., 2676880., 2698232., 2698128., 2719648., 2325637.,
      2344064., 2344274., 2362848., 2362911., 2381632., 2381548., 2400416.,
      2687736., 2708896., 2708656., 2729984., 2729576., 2751072., 2750496.,
      2772160., 3100160., 3124288., 3124096., 3148416., 3148032., 3172544.,
      3171968., 3196672., 3514168., 3541104., 3541072., 3568224., 3567976.,
      3595344., 3594880., 3622464., 3935968., 3965808., 3965792., 3995872.,
      3995616., 4025936., 4025440., 4056000., 3592296., 3619072., 3619280.,
      3646272., 3646264., 3673472., 3673248., 3700672., 3245312., 3268928.,
      3269504., 3293312., 3293696., 3317696., 3317888., 3342080., 2874216.,
      2894832., 2895408., 2916192., 2916600., 2937552., 2937792., 2958912.,
      3287921., 3311090., 3311102., 3334460., 3334283., 3357830., 3357464.,
      3381200., 3806704., 3833176., 3833200., 3859888., 3859696., 3886600.,
      3886192., 3913312., 4332885., 4362512., 4362642., 4392512., 4392399.,
      4422512., 4422156., 4452512., 4867528., 4900418., 4900492., 4933652.,
      4933456., 4966886., 4966420., 5000120., 4326715., 4356290., 4356498.,
      4386316., 4386281., 4416342., 4416064., 4446368., 3781968., 3808120.,
      3808624., 3834992., 3835280., 3861864., 3861936., 3888736., 3262687.,
      3285564., 3286014., 3309080., 3309341., 3332596., 3332668., 3356112.,
      2888600., 2909312., 2909744., 2930624., 2930888., 2951936., 2952032.,
      2973248., 3253504., 3277120., 3277696., 3301504., 3301888., 3325888.,
      3326080., 3350272., 3564952., 3591312., 3592144., 3618720., 3619336.,
      3646128., 3646528., 3673536., 3884448., 3913648., 3914592., 3944032.,
      3944736., 3974416., 3974880., 4004800., 3465160., 3491360., 3492432.,
      3518848., 3519704., 3546336., 3546976., 3573824., 3042304., 3065408.,
      3066752., 3090048., 3091200., 3114688., 3115648., 3139328., 2629896.,
      2650064., 2651312., 2671648., 2672728., 2693232., 2694144., 2714816.,
      2360331., 2379026., 2379090., 2397932., 2397849., 2416838., 2416608.,
      2435744., 2661936., 2683272., 2683280., 2704784., 2704624., 2726296.,
      2725968., 2747808., 2913711., 2937516., 2937598., 2961592., 2961485.,
      2985668., 2985372., 3009744., 3172064., 3198422., 3198452., 3225020.,
      3224840., 3251618., 3251228., 3278216., 2848521., 2872314., 2872286.,
      2896268., 2896051., 2920222., 2919816., 2944176., 2521296., 2542440.,
      2542480., 2563792., 2563664., 2585144., 2584848., 2606496., 2167773.,
      2186184., 2186162., 2204720., 2204551., 2223256., 2222940., 2241792.,
      1881706., 1898056., 1897476., 1913952., 1913246., 1929848., 1929016.,
      1945744., 2120832., 2139440., 2138784., 2157536., 2156736., 2175632.,
      2174688., 2193728., 2314234., 2334916., 2334332., 2355176., 2354430.,
      2375436., 2374528., 2395696., 2513224., 2536052., 2535432., 2558440.,
      2557640., 2580828., 2579848., 2603216., 2265950., 2286512., 2285980.,
      2306704., 2306010., 2326896., 2326040., 2347088., 2015936., 2034160.,
      2033824., 2052192., 2051712., 2070224., 2069600., 2088256., 1730302.,
      1746116., 1745828., 1761768., 1761354., 1777420., 1776880., 1793072.};
  const std::array<int, 4> in_shape = {{3, 9, 10, 4}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 256.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, VALID3x9x10x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      742872.,  757524.,  744168.,  758856.,  745464.,  760188.,  746760.,
      761520.,  748056.,  762852.,  749352.,  764184.,  750648.,  765516.,
      751944.,  766848.,  753240.,  768180.,  754536.,  769512.,  755832.,
      770844.,  757128.,  772176.,  758424.,  773508.,  759720.,  774840.,
      761016.,  776172.,  762312.,  777504.,  763608.,  778836.,  764904.,
      780168.,  766200.,  781500.,  767496.,  782832.,  768792.,  784164.,
      770088.,  785496.,  771384.,  786828.,  772680.,  788160.,  773976.,
      789492.,  775272.,  790824.,  776568.,  792156.,  777864.,  793488.,
      794712.,  810804.,  796008.,  812136.,  797304.,  813468.,  798600.,
      814800.,  799896.,  816132.,  801192.,  817464.,  802488.,  818796.,
      803784.,  820128.,  805080.,  821460.,  806376.,  822792.,  807672.,
      824124.,  808968.,  825456.,  810264.,  826788.,  811560.,  828120.,
      812856.,  829452.,  814152.,  830784.,  815448.,  832116.,  816744.,
      833448.,  818040.,  834780.,  819336.,  836112.,  820632.,  837444.,
      821928.,  838776.,  823224.,  840108.,  824520.,  841440.,  825816.,
      842772.,  827112.,  844104.,  828408.,  845436.,  829704.,  846768.,
      846552.,  864084.,  847848.,  865416.,  849144.,  866748.,  850440.,
      868080.,  851736.,  869412.,  853032.,  870744.,  854328.,  872076.,
      855624.,  873408.,  856920.,  874740.,  858216.,  876072.,  859512.,
      877404.,  860808.,  878736.,  862104.,  880068.,  863400.,  881400.,
      864696.,  882732.,  865992.,  884064.,  867288.,  885396.,  868584.,
      886728.,  869880.,  888060.,  871176.,  889392.,  872472.,  890724.,
      873768.,  892056.,  875064.,  893388.,  876360.,  894720.,  877656.,
      896052.,  878952.,  897384.,  880248.,  898716.,  881544.,  900048.,
      898392.,  917364.,  899688.,  918696.,  900984.,  920028.,  902280.,
      921360.,  903576.,  922692.,  904872.,  924024.,  906168.,  925356.,
      907464.,  926688.,  908760.,  928020.,  910056.,  929352.,  911352.,
      930684.,  912648.,  932016.,  913944.,  933348.,  915240.,  934680.,
      916536.,  936012.,  917832.,  937344.,  919128.,  938676.,  920424.,
      940008.,  921720.,  941340.,  923016.,  942672.,  924312.,  944004.,
      925608.,  945336.,  926904.,  946668.,  928200.,  948000.,  929496.,
      949332.,  930792.,  950664.,  932088.,  951996.,  933384.,  953328.,
      950232.,  970644.,  951528.,  971976.,  952824.,  973308.,  954120.,
      974640.,  955416.,  975972.,  956712.,  977304.,  958008.,  978636.,
      959304.,  979968.,  960600.,  981300.,  961896.,  982632.,  963192.,
      983964.,  964488.,  985296.,  965784.,  986628.,  967080.,  987960.,
      968376.,  989292.,  969672.,  990624.,  970968.,  991956.,  972264.,
      993288.,  973560.,  994620.,  974856.,  995952.,  976152.,  997284.,
      977448.,  998616.,  978744.,  999948.,  980040.,  1001280., 981336.,
      1002612., 982632.,  1003944., 983928.,  1005276., 985224.,  1006608.,
      1002072., 1023924., 1003368., 1025256., 1004664., 1026588., 1005960.,
      1027920., 1007256., 1029252., 1008552., 1030584., 1009848., 1031916.,
      1011144., 1033248., 1012440., 1034580., 1013736., 1035912., 1015032.,
      1037244., 1016328., 1038576., 1017624., 1039908., 1018920., 1041240.,
      1020216., 1042572., 1021512., 1043904., 1022808., 1045236., 1024104.,
      1046568., 1025400., 1047900., 1026696., 1049232., 1027992., 1050564.,
      1029288., 1051896., 1030584., 1053228., 1031880., 1054560., 1033176.,
      1055892., 1034472., 1057224., 1035768., 1058556., 1037064., 1059888.,
      1053912., 1077204., 1055208., 1078536., 1056504., 1079868., 1057800.,
      1081200., 1059096., 1082532., 1060392., 1083864., 1061688., 1085196.,
      1062984., 1086528., 1064280., 1087860., 1065576., 1089192., 1066872.,
      1090524., 1068168., 1091856., 1069464., 1093188., 1070760., 1094520.,
      1072056., 1095852., 1073352., 1097184., 1074648., 1098516., 1075944.,
      1099848., 1077240., 1101180., 1078536., 1102512., 1079832., 1103844.,
      1081128., 1105176., 1082424., 1106508., 1083720., 1107840., 1085016.,
      1109172., 1086312., 1110504., 1087608., 1111836., 1088904., 1113168.};
  const std::array<int, 4> in_shape = {{3, 9, 10, 4}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, SAME3x9x10x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1578806., 1594116., 1609426., 1624736., 1594620., 1610056., 1625492.,
      1640928., 1610434., 1625996., 1641558., 1657120., 1626248., 1641936.,
      1657624., 1673312., 1850448., 1868160., 1885872., 1903584., 1868672.,
      1886528., 1904384., 1922240., 1886896., 1904896., 1922896., 1940896.,
      1905120., 1923264., 1941408., 1959552., 2092138., 2112068., 2131998.,
      2151928., 2112700., 2132792., 2152884., 2172976., 2133262., 2153516.,
      2173770., 2194024., 2153824., 2174240., 2194656., 2215072., 2336612.,
      2358832., 2381052., 2403272., 2359440., 2381840., 2404240., 2426640.,
      2382268., 2404848., 2427428., 2450008., 2405096., 2427856., 2450616.,
      2473376., 2137386., 2157452., 2177518., 2197584., 2158068., 2178296.,
      2198524., 2218752., 2178750., 2199140., 2219530., 2239920., 2199432.,
      2219984., 2240536., 2261088., 1941072., 1958912., 1976752., 1994592.,
      1959680., 1977664., 1995648., 2013632., 1978288., 1996416., 2014544.,
      2032672., 1996896., 2015168., 2033440., 2051712., 1738742., 1754540.,
      1770338., 1786136., 1755092., 1771016., 1786940., 1802864., 1771442.,
      1787492., 1803542., 1819592., 1787792., 1803968., 1820144., 1836320.,
      2010319., 2028774., 2047229., 2065684., 2028730., 2047332., 2065934.,
      2084536., 2047141., 2065890., 2084639., 2103388., 2065552., 2084448.,
      2103344., 2122240., 2349320., 2370528., 2391736., 2412944., 2370464.,
      2391840., 2413216., 2434592., 2391608., 2413152., 2434696., 2456240.,
      2412752., 2434464., 2456176., 2477888., 2668833., 2692622., 2716411.,
      2740200., 2692626., 2716604., 2740582., 2764560., 2716419., 2740586.,
      2764753., 2788920., 2740212., 2764568., 2788924., 2813280., 2991306.,
      3017760., 3044214., 3070668., 3017664., 3044328., 3070992., 3097656.,
      3044022., 3070896., 3097770., 3124644., 3070380., 3097464., 3124548.,
      3151632., 2742625., 2766402., 2790179., 2813956., 2766430., 2790396.,
      2814362., 2838328., 2790235., 2814390., 2838545., 2862700., 2814040.,
      2838384., 2862728., 2887072., 2497800., 2518816., 2539832., 2560848.,
      2519136., 2540320., 2561504., 2582688., 2540472., 2561824., 2583176.,
      2604528., 2561808., 2583328., 2604848., 2626368., 2227471., 2245898.,
      2264325., 2282752., 2246166., 2264740., 2283314., 2301888., 2264861.,
      2283582., 2302303., 2321024., 2283556., 2302424., 2321292., 2340160.,
      2522952., 2544112., 2565272., 2586432., 2543120., 2564448., 2585776.,
      2607104., 2563288., 2584784., 2606280., 2627776., 2583456., 2605120.,
      2626784., 2648448., 2948544., 2972672., 2996800., 3020928., 2971648.,
      2995968., 3020288., 3044608., 2994752., 3019264., 3043776., 3068288.,
      3017856., 3042560., 3067264., 3091968., 3418680., 3445616., 3472552.,
      3499488., 3444880., 3472032., 3499184., 3526336., 3471080., 3498448.,
      3525816., 3553184., 3497280., 3524864., 3552448., 3580032., 3893040.,
      3922880., 3952720., 3982560., 3922240., 3952320., 3982400., 4012480.,
      3951440., 3981760., 4012080., 4042400., 3980640., 4011200., 4041760.,
      4072320., 3596600., 3623376., 3650152., 3676928., 3622960., 3649952.,
      3676944., 3703936., 3649320., 3676528., 3703736., 3730944., 3675680.,
      3703104., 3730528., 3757952., 3304896., 3328512., 3352128., 3375744.,
      3328512., 3352320., 3376128., 3399936., 3352128., 3376128., 3400128.,
      3424128., 3375744., 3399936., 3424128., 3448320., 2968136., 2988752.,
      3009368., 3029984., 2988848., 3009632., 3030416., 3051200., 3009560.,
      3030512., 3051464., 3072416., 3030272., 3051392., 3072512., 3093632.,
      3568993., 3592162., 3615331., 3638500., 3591870., 3615228., 3638586.,
      3661944., 3614747., 3638294., 3661841., 3685388., 3637624., 3661360.,
      3685096., 3708832., 4181112., 4207584., 4234056., 4260528., 4207264.,
      4233952., 4260640., 4287328., 4233416., 4260320., 4287224., 4314128.,
      4259568., 4286688., 4313808., 4340928., 4858607., 4888234., 4917861.,
      4947488., 4888182., 4918052., 4947922., 4977792., 4917757., 4947870.,
      4977983., 5008096., 4947332., 4977688., 5008044., 5038400., 5540630.,
      5573520., 5606410., 5639300., 5573520., 5606680., 5639840., 5673000.,
      5606410., 5639840., 5673270., 5706700., 5639300., 5673000., 5706700.,
      5740400., 4858607., 4888182., 4917757., 4947332., 4888234., 4918052.,
      4947870., 4977688., 4917861., 4947922., 4977983., 5008044., 4947488.,
      4977792., 5008096., 5038400., 4181112., 4207264., 4233416., 4259568.,
      4207584., 4233952., 4260320., 4286688., 4234056., 4260640., 4287224.,
      4313808., 4260528., 4287328., 4314128., 4340928., 3568993., 3591870.,
      3614747., 3637624., 3592162., 3615228., 3638294., 3661360., 3615331.,
      3638586., 3661841., 3685096., 3638500., 3661944., 3685388., 3708832.,
      2968136., 2988848., 3009560., 3030272., 2988752., 3009632., 3030512.,
      3051392., 3009368., 3030416., 3051464., 3072512., 3029984., 3051200.,
      3072416., 3093632., 3304896., 3328512., 3352128., 3375744., 3328512.,
      3352320., 3376128., 3399936., 3352128., 3376128., 3400128., 3424128.,
      3375744., 3399936., 3424128., 3448320., 3596600., 3622960., 3649320.,
      3675680., 3623376., 3649952., 3676528., 3703104., 3650152., 3676944.,
      3703736., 3730528., 3676928., 3703936., 3730944., 3757952., 3893040.,
      3922240., 3951440., 3980640., 3922880., 3952320., 3981760., 4011200.,
      3952720., 3982400., 4012080., 4041760., 3982560., 4012480., 4042400.,
      4072320., 3418680., 3444880., 3471080., 3497280., 3445616., 3472032.,
      3498448., 3524864., 3472552., 3499184., 3525816., 3552448., 3499488.,
      3526336., 3553184., 3580032., 2948544., 2971648., 2994752., 3017856.,
      2972672., 2995968., 3019264., 3042560., 2996800., 3020288., 3043776.,
      3067264., 3020928., 3044608., 3068288., 3091968., 2522952., 2543120.,
      2563288., 2583456., 2544112., 2564448., 2584784., 2605120., 2565272.,
      2585776., 2606280., 2626784., 2586432., 2607104., 2627776., 2648448.,
      2227471., 2246166., 2264861., 2283556., 2245898., 2264740., 2283582.,
      2302424., 2264325., 2283314., 2302303., 2321292., 2282752., 2301888.,
      2321024., 2340160., 2497800., 2519136., 2540472., 2561808., 2518816.,
      2540320., 2561824., 2583328., 2539832., 2561504., 2583176., 2604848.,
      2560848., 2582688., 2604528., 2626368., 2742625., 2766430., 2790235.,
      2814040., 2766402., 2790396., 2814390., 2838384., 2790179., 2814362.,
      2838545., 2862728., 2813956., 2838328., 2862700., 2887072., 2991306.,
      3017664., 3044022., 3070380., 3017760., 3044328., 3070896., 3097464.,
      3044214., 3070992., 3097770., 3124548., 3070668., 3097656., 3124644.,
      3151632., 2668833., 2692626., 2716419., 2740212., 2692622., 2716604.,
      2740586., 2764568., 2716411., 2740582., 2764753., 2788924., 2740200.,
      2764560., 2788920., 2813280., 2349320., 2370464., 2391608., 2412752.,
      2370528., 2391840., 2413152., 2434464., 2391736., 2413216., 2434696.,
      2456176., 2412944., 2434592., 2456240., 2477888., 2010319., 2028730.,
      2047141., 2065552., 2028774., 2047332., 2065890., 2084448., 2047229.,
      2065934., 2084639., 2103344., 2065684., 2084536., 2103388., 2122240.,
      1738742., 1755092., 1771442., 1787792., 1754540., 1771016., 1787492.,
      1803968., 1770338., 1786940., 1803542., 1820144., 1786136., 1802864.,
      1819592., 1836320., 1941072., 1959680., 1978288., 1996896., 1958912.,
      1977664., 1996416., 2015168., 1976752., 1995648., 2014544., 2033440.,
      1994592., 2013632., 2032672., 2051712., 2137386., 2158068., 2178750.,
      2199432., 2157452., 2178296., 2199140., 2219984., 2177518., 2198524.,
      2219530., 2240536., 2197584., 2218752., 2239920., 2261088., 2336612.,
      2359440., 2382268., 2405096., 2358832., 2381840., 2404848., 2427856.,
      2381052., 2404240., 2427428., 2450616., 2403272., 2426640., 2450008.,
      2473376., 2092138., 2112700., 2133262., 2153824., 2112068., 2132792.,
      2153516., 2174240., 2131998., 2152884., 2173770., 2194656., 2151928.,
      2172976., 2194024., 2215072., 1850448., 1868672., 1886896., 1905120.,
      1868160., 1886528., 1904896., 1923264., 1885872., 1904384., 1922896.,
      1941408., 1903584., 1922240., 1940896., 1959552., 1578806., 1594620.,
      1610434., 1626248., 1594116., 1610056., 1625996., 1641936., 1609426.,
      1625492., 1641558., 1657624., 1624736., 1640928., 1657120., 1673312.};
  const std::array<int, 4> in_shape = {{3, 9, 10, 4}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 256.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, VALID3x9x10x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1471092., 1485744., 1500396., 1515048., 1473648., 1488336., 1503024.,
      1517712., 1476204., 1490928., 1505652., 1520376., 1478760., 1493520.,
      1508280., 1523040., 1481316., 1496112., 1510908., 1525704., 1483872.,
      1498704., 1513536., 1528368., 1486428., 1501296., 1516164., 1531032.,
      1488984., 1503888., 1518792., 1533696., 1491540., 1506480., 1521420.,
      1536360., 1494096., 1509072., 1524048., 1539024., 1496652., 1511664.,
      1526676., 1541688., 1499208., 1514256., 1529304., 1544352., 1501764.,
      1516848., 1531932., 1547016., 1504320., 1519440., 1534560., 1549680.,
      1506876., 1522032., 1537188., 1552344., 1509432., 1524624., 1539816.,
      1555008., 1511988., 1527216., 1542444., 1557672., 1514544., 1529808.,
      1545072., 1560336., 1517100., 1532400., 1547700., 1563000., 1519656.,
      1534992., 1550328., 1565664., 1522212., 1537584., 1552956., 1568328.,
      1524768., 1540176., 1555584., 1570992., 1527324., 1542768., 1558212.,
      1573656., 1529880., 1545360., 1560840., 1576320., 1532436., 1547952.,
      1563468., 1578984., 1534992., 1550544., 1566096., 1581648., 1537548.,
      1553136., 1568724., 1584312., 1540104., 1555728., 1571352., 1586976.,
      1573332., 1589424., 1605516., 1621608., 1575888., 1592016., 1608144.,
      1624272., 1578444., 1594608., 1610772., 1626936., 1581000., 1597200.,
      1613400., 1629600., 1583556., 1599792., 1616028., 1632264., 1586112.,
      1602384., 1618656., 1634928., 1588668., 1604976., 1621284., 1637592.,
      1591224., 1607568., 1623912., 1640256., 1593780., 1610160., 1626540.,
      1642920., 1596336., 1612752., 1629168., 1645584., 1598892., 1615344.,
      1631796., 1648248., 1601448., 1617936., 1634424., 1650912., 1604004.,
      1620528., 1637052., 1653576., 1606560., 1623120., 1639680., 1656240.,
      1609116., 1625712., 1642308., 1658904., 1611672., 1628304., 1644936.,
      1661568., 1614228., 1630896., 1647564., 1664232., 1616784., 1633488.,
      1650192., 1666896., 1619340., 1636080., 1652820., 1669560., 1621896.,
      1638672., 1655448., 1672224., 1624452., 1641264., 1658076., 1674888.,
      1627008., 1643856., 1660704., 1677552., 1629564., 1646448., 1663332.,
      1680216., 1632120., 1649040., 1665960., 1682880., 1634676., 1651632.,
      1668588., 1685544., 1637232., 1654224., 1671216., 1688208., 1639788.,
      1656816., 1673844., 1690872., 1642344., 1659408., 1676472., 1693536.,
      1675572., 1693104., 1710636., 1728168., 1678128., 1695696., 1713264.,
      1730832., 1680684., 1698288., 1715892., 1733496., 1683240., 1700880.,
      1718520., 1736160., 1685796., 1703472., 1721148., 1738824., 1688352.,
      1706064., 1723776., 1741488., 1690908., 1708656., 1726404., 1744152.,
      1693464., 1711248., 1729032., 1746816., 1696020., 1713840., 1731660.,
      1749480., 1698576., 1716432., 1734288., 1752144., 1701132., 1719024.,
      1736916., 1754808., 1703688., 1721616., 1739544., 1757472., 1706244.,
      1724208., 1742172., 1760136., 1708800., 1726800., 1744800., 1762800.,
      1711356., 1729392., 1747428., 1765464., 1713912., 1731984., 1750056.,
      1768128., 1716468., 1734576., 1752684., 1770792., 1719024., 1737168.,
      1755312., 1773456., 1721580., 1739760., 1757940., 1776120., 1724136.,
      1742352., 1760568., 1778784., 1726692., 1744944., 1763196., 1781448.,
      1729248., 1747536., 1765824., 1784112., 1731804., 1750128., 1768452.,
      1786776., 1734360., 1752720., 1771080., 1789440., 1736916., 1755312.,
      1773708., 1792104., 1739472., 1757904., 1776336., 1794768., 1742028.,
      1760496., 1778964., 1797432., 1744584., 1763088., 1781592., 1800096.,
      1777812., 1796784., 1815756., 1834728., 1780368., 1799376., 1818384.,
      1837392., 1782924., 1801968., 1821012., 1840056., 1785480., 1804560.,
      1823640., 1842720., 1788036., 1807152., 1826268., 1845384., 1790592.,
      1809744., 1828896., 1848048., 1793148., 1812336., 1831524., 1850712.,
      1795704., 1814928., 1834152., 1853376., 1798260., 1817520., 1836780.,
      1856040., 1800816., 1820112., 1839408., 1858704., 1803372., 1822704.,
      1842036., 1861368., 1805928., 1825296., 1844664., 1864032., 1808484.,
      1827888., 1847292., 1866696., 1811040., 1830480., 1849920., 1869360.,
      1813596., 1833072., 1852548., 1872024., 1816152., 1835664., 1855176.,
      1874688., 1818708., 1838256., 1857804., 1877352., 1821264., 1840848.,
      1860432., 1880016., 1823820., 1843440., 1863060., 1882680., 1826376.,
      1846032., 1865688., 1885344., 1828932., 1848624., 1868316., 1888008.,
      1831488., 1851216., 1870944., 1890672., 1834044., 1853808., 1873572.,
      1893336., 1836600., 1856400., 1876200., 1896000., 1839156., 1858992.,
      1878828., 1898664., 1841712., 1861584., 1881456., 1901328., 1844268.,
      1864176., 1884084., 1903992., 1846824., 1866768., 1886712., 1906656.,
      1880052., 1900464., 1920876., 1941288., 1882608., 1903056., 1923504.,
      1943952., 1885164., 1905648., 1926132., 1946616., 1887720., 1908240.,
      1928760., 1949280., 1890276., 1910832., 1931388., 1951944., 1892832.,
      1913424., 1934016., 1954608., 1895388., 1916016., 1936644., 1957272.,
      1897944., 1918608., 1939272., 1959936., 1900500., 1921200., 1941900.,
      1962600., 1903056., 1923792., 1944528., 1965264., 1905612., 1926384.,
      1947156., 1967928., 1908168., 1928976., 1949784., 1970592., 1910724.,
      1931568., 1952412., 1973256., 1913280., 1934160., 1955040., 1975920.,
      1915836., 1936752., 1957668., 1978584., 1918392., 1939344., 1960296.,
      1981248., 1920948., 1941936., 1962924., 1983912., 1923504., 1944528.,
      1965552., 1986576., 1926060., 1947120., 1968180., 1989240., 1928616.,
      1949712., 1970808., 1991904., 1931172., 1952304., 1973436., 1994568.,
      1933728., 1954896., 1976064., 1997232., 1936284., 1957488., 1978692.,
      1999896., 1938840., 1960080., 1981320., 2002560., 1941396., 1962672.,
      1983948., 2005224., 1943952., 1965264., 1986576., 2007888., 1946508.,
      1967856., 1989204., 2010552., 1949064., 1970448., 1991832., 2013216.,
      1982292., 2004144., 2025996., 2047848., 1984848., 2006736., 2028624.,
      2050512., 1987404., 2009328., 2031252., 2053176., 1989960., 2011920.,
      2033880., 2055840., 1992516., 2014512., 2036508., 2058504., 1995072.,
      2017104., 2039136., 2061168., 1997628., 2019696., 2041764., 2063832.,
      2000184., 2022288., 2044392., 2066496., 2002740., 2024880., 2047020.,
      2069160., 2005296., 2027472., 2049648., 2071824., 2007852., 2030064.,
      2052276., 2074488., 2010408., 2032656., 2054904., 2077152., 2012964.,
      2035248., 2057532., 2079816., 2015520., 2037840., 2060160., 2082480.,
      2018076., 2040432., 2062788., 2085144., 2020632., 2043024., 2065416.,
      2087808., 2023188., 2045616., 2068044., 2090472., 2025744., 2048208.,
      2070672., 2093136., 2028300., 2050800., 2073300., 2095800., 2030856.,
      2053392., 2075928., 2098464., 2033412., 2055984., 2078556., 2101128.,
      2035968., 2058576., 2081184., 2103792., 2038524., 2061168., 2083812.,
      2106456., 2041080., 2063760., 2086440., 2109120., 2043636., 2066352.,
      2089068., 2111784., 2046192., 2068944., 2091696., 2114448., 2048748.,
      2071536., 2094324., 2117112., 2051304., 2074128., 2096952., 2119776.,
      2084532., 2107824., 2131116., 2154408., 2087088., 2110416., 2133744.,
      2157072., 2089644., 2113008., 2136372., 2159736., 2092200., 2115600.,
      2139000., 2162400., 2094756., 2118192., 2141628., 2165064., 2097312.,
      2120784., 2144256., 2167728., 2099868., 2123376., 2146884., 2170392.,
      2102424., 2125968., 2149512., 2173056., 2104980., 2128560., 2152140.,
      2175720., 2107536., 2131152., 2154768., 2178384., 2110092., 2133744.,
      2157396., 2181048., 2112648., 2136336., 2160024., 2183712., 2115204.,
      2138928., 2162652., 2186376., 2117760., 2141520., 2165280., 2189040.,
      2120316., 2144112., 2167908., 2191704., 2122872., 2146704., 2170536.,
      2194368., 2125428., 2149296., 2173164., 2197032., 2127984., 2151888.,
      2175792., 2199696., 2130540., 2154480., 2178420., 2202360., 2133096.,
      2157072., 2181048., 2205024., 2135652., 2159664., 2183676., 2207688.,
      2138208., 2162256., 2186304., 2210352., 2140764., 2164848., 2188932.,
      2213016., 2143320., 2167440., 2191560., 2215680., 2145876., 2170032.,
      2194188., 2218344., 2148432., 2172624., 2196816., 2221008., 2150988.,
      2175216., 2199444., 2223672., 2153544., 2177808., 2202072., 2226336.};
  const std::array<int, 4> in_shape = {{3, 9, 10, 4}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, SAME3x10x8x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1980580., 2378481., 2776928., 3175900., 2780456., 2384529., 1988140.,
      2284160., 2742456., 3201184., 3660320., 3203872., 2747064., 2289920.,
      2590020., 3109023., 3628296., 4147812., 3629808., 3111615., 2593260.,
      2897200., 3477030., 4056920., 4636840., 4056920., 3477030., 2897200.,
      2593260., 3111615., 3629808., 4147812., 3628296., 3109023., 2590020.,
      2289920., 2747064., 3203872., 3660320., 3201184., 2742456., 2284160.,
      1988140., 2384529., 2780456., 3175900., 2776928., 2378481., 1980580.};
  const std::array<int, 4> in_shape = {{3, 10, 8, 1}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, VALID3x10x8x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      38776., 39076., 39376., 39676., 39976., 40276., 40576., 41176., 41476.,
      41776., 42076., 42376., 42676., 42976., 43576., 43876., 44176., 44476.,
      44776., 45076., 45376., 45976., 46276., 46576., 46876., 47176., 47476.,
      47776., 48376., 48676., 48976., 49276., 49576., 49876., 50176., 50776.,
      51076., 51376., 51676., 51976., 52276., 52576., 53176., 53476., 53776.,
      54076., 54376., 54676., 54976.};
  const std::array<int, 4> in_shape = {{3, 10, 8, 1}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, SAME3x10x8x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      3949925., 3961160., 4743417., 4756962., 5537980., 5553856., 6333572.,
      6351800., 5544889., 5560912., 4755261., 4769058., 3964730., 3976280.,
      4555000., 4568320., 5468856., 5484912., 6383552., 6402368., 7299040.,
      7320640., 6388760., 6407744., 5477784., 5494128., 4566160., 4579840.,
      5164515., 5180040., 6199335., 6218046., 7234668., 7256592., 8270460.,
      8295624., 7237503., 7259616., 6204195., 6223230., 5170590., 5186520.,
      5776550., 5794400., 6932550., 6954060., 8088640., 8113840., 9244760.,
      9273680., 8088430., 8113840., 6932190., 6954060., 5776100., 5794400.,
      5169915., 5186520., 6203223., 6223230., 7236180., 7259616., 8268732.,
      8295624., 7232967., 7256592., 6197715., 6218046., 5163030., 5180040.,
      4564600., 4579840., 5475768., 5494128., 6386240., 6407744., 7295968.,
      7320640., 6380696., 6402368., 5466264., 5484912., 4552720., 4568320.,
      3962525., 3976280., 4752489., 4769058., 5541508., 5560912., 6329540.,
      6351800., 5534305., 5553856., 4740141., 4756962., 3947090., 3961160.};
  const std::array<int, 4> in_shape = {{3, 10, 8, 1}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, VALID3x10x8x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      75308.,  77552.,  75884.,  78152.,  76460.,  78752.,  77036.,  79352.,
      77612.,  79952.,  78188.,  80552.,  78764.,  81152.,  79916.,  82352.,
      80492.,  82952.,  81068.,  83552.,  81644.,  84152.,  82220.,  84752.,
      82796.,  85352.,  83372.,  85952.,  84524.,  87152.,  85100.,  87752.,
      85676.,  88352.,  86252.,  88952.,  86828.,  89552.,  87404.,  90152.,
      87980.,  90752.,  89132.,  91952.,  89708.,  92552.,  90284.,  93152.,
      90860.,  93752.,  91436.,  94352.,  92012.,  94952.,  92588.,  95552.,
      93740.,  96752.,  94316.,  97352.,  94892.,  97952.,  95468.,  98552.,
      96044.,  99152.,  96620.,  99752.,  97196.,  100352., 98348.,  101552.,
      98924.,  102152., 99500.,  102752., 100076., 103352., 100652., 103952.,
      101228., 104552., 101804., 105152., 102956., 106352., 103532., 106952.,
      104108., 107552., 104684., 108152., 105260., 108752., 105836., 109352.,
      106412., 109952.};
  const std::array<int, 4> in_shape = {{3, 10, 8, 1}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, SAME3x10x8x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      3319015., 3330250., 3341485., 3352720., 3972873., 3986418., 3999963.,
      4013508., 4623220., 4639096., 4654972., 4670848., 5269972., 5288200.,
      5306428., 5324656., 4597467., 4613490., 4629513., 4645536., 3928725.,
      3942522., 3956319., 3970116., 3263830., 3275380., 3286930., 3298480.,
      3884520., 3897840., 3911160., 3924480., 4648632., 4664688., 4680744.,
      4696800., 5408256., 5427072., 5445888., 5464704., 6163296., 6184896.,
      6206496., 6228096., 5375496., 5394480., 5413464., 5432448., 4592472.,
      4608816., 4625160., 4641504., 3814320., 3828000., 3841680., 3855360.,
      4438305., 4453830., 4469355., 4484880., 5309751., 5328462., 5347173.,
      5365884., 6175540., 6197464., 6219388., 6241312., 7035564., 7060728.,
      7085892., 7111056., 6134429., 6156542., 6178655., 6200768., 5239275.,
      5258310., 5277345., 5296380., 4350210., 4366140., 4382070., 4398000.,
      4976530., 4994380., 5012230., 5030080., 5951622., 5973132., 5994642.,
      6016152., 6919696., 6944896., 6970096., 6995296., 7880632., 7909552.,
      7938472., 7967392., 6868890., 6894300., 6919710., 6945120., 5864526.,
      5886396., 5908266., 5930136., 4867660., 4885960., 4904260., 4922560.,
      4517145., 4533750., 4550355., 4566960., 5400711., 5420718., 5440725.,
      5460732., 6277404., 6300840., 6324276., 6347712., 7147116., 7174008.,
      7200900., 7227792., 6227781., 6251406., 6275031., 6298656., 5315643.,
      5335974., 5356305., 5376636., 4410810., 4427820., 4444830., 4461840.,
      4101480., 4116720., 4131960., 4147200., 4902840., 4921200., 4939560.,
      4957920., 5697664., 5719168., 5740672., 5762176., 6485856., 6510528.,
      6535200., 6559872., 5650568., 5672240., 5693912., 5715584., 4822104.,
      4840752., 4859400., 4878048., 4000560., 4016160., 4031760., 4047360.,
      3733375., 3747130., 3760885., 3774640., 4462617., 4479186., 4495755.,
      4512324., 5185852., 5205256., 5224660., 5244064., 5902996., 5925256.,
      5947516., 5969776., 5142627., 5162178., 5181729., 5201280., 4388517.,
      4405338., 4422159., 4438980., 3640750., 3654820., 3668890., 3682960.};
  const std::array<int, 4> in_shape = {{3, 10, 8, 1}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 512.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, VALID3x10x8x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      148372., 150616., 152860., 155104., 149500., 151768., 154036., 156304.,
      150628., 152920., 155212., 157504., 151756., 154072., 156388., 158704.,
      152884., 155224., 157564., 159904., 154012., 156376., 158740., 161104.,
      155140., 157528., 159916., 162304., 157396., 159832., 162268., 164704.,
      158524., 160984., 163444., 165904., 159652., 162136., 164620., 167104.,
      160780., 163288., 165796., 168304., 161908., 164440., 166972., 169504.,
      163036., 165592., 168148., 170704., 164164., 166744., 169324., 171904.,
      166420., 169048., 171676., 174304., 167548., 170200., 172852., 175504.,
      168676., 171352., 174028., 176704., 169804., 172504., 175204., 177904.,
      170932., 173656., 176380., 179104., 172060., 174808., 177556., 180304.,
      173188., 175960., 178732., 181504., 175444., 178264., 181084., 183904.,
      176572., 179416., 182260., 185104., 177700., 180568., 183436., 186304.,
      178828., 181720., 184612., 187504., 179956., 182872., 185788., 188704.,
      181084., 184024., 186964., 189904., 182212., 185176., 188140., 191104.,
      184468., 187480., 190492., 193504., 185596., 188632., 191668., 194704.,
      186724., 189784., 192844., 195904., 187852., 190936., 194020., 197104.,
      188980., 192088., 195196., 198304., 190108., 193240., 196372., 199504.,
      191236., 194392., 197548., 200704., 193492., 196696., 199900., 203104.,
      194620., 197848., 201076., 204304., 195748., 199000., 202252., 205504.,
      196876., 200152., 203428., 206704., 198004., 201304., 204604., 207904.,
      199132., 202456., 205780., 209104., 200260., 203608., 206956., 210304.,
      202516., 205912., 209308., 212704., 203644., 207064., 210484., 213904.,
      204772., 208216., 211660., 215104., 205900., 209368., 212836., 216304.,
      207028., 210520., 214012., 217504., 208156., 211672., 215188., 218704.,
      209284., 212824., 216364., 219904.};
  const std::array<int, 4> in_shape = {{3, 10, 8, 1}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, SAME3x10x8x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      3947090., 3961160., 4740141., 4756962., 5534305., 5553856., 6329540.,
      6351800., 5541508., 5560912., 4752489., 4769058., 3962525., 3976280.,
      4552720., 4568320., 5466264., 5484912., 6380696., 6402368., 7295968.,
      7320640., 6386240., 6407744., 5475768., 5494128., 4564600., 4579840.,
      5163030., 5180040., 6197715., 6218046., 7232967., 7256592., 8268732.,
      8295624., 7236180., 7259616., 6203223., 6223230., 5169915., 5186520.,
      5776100., 5794400., 6932190., 6954060., 8088430., 8113840., 9244760.,
      9273680., 8088640., 8113840., 6932550., 6954060., 5776550., 5794400.,
      5170590., 5186520., 6204195., 6223230., 7237503., 7259616., 8270460.,
      8295624., 7234668., 7256592., 6199335., 6218046., 5164515., 5180040.,
      4566160., 4579840., 5477784., 5494128., 6388760., 6407744., 7299040.,
      7320640., 6383552., 6402368., 5468856., 5484912., 4555000., 4568320.,
      3964730., 3976280., 4755261., 4769058., 5544889., 5560912., 6333572.,
      6351800., 5537980., 5553856., 4743417., 4756962., 3949925., 3961160.};
  const std::array<int, 4> in_shape = {{3, 10, 8, 2}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, VALID3x10x8x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      77252.,  77552.,  77852.,  78152.,  78452.,  78752.,  79052.,  79352.,
      79652.,  79952.,  80252.,  80552.,  80852.,  81152.,  82052.,  82352.,
      82652.,  82952.,  83252.,  83552.,  83852.,  84152.,  84452.,  84752.,
      85052.,  85352.,  85652.,  85952.,  86852.,  87152.,  87452.,  87752.,
      88052.,  88352.,  88652.,  88952.,  89252.,  89552.,  89852.,  90152.,
      90452.,  90752.,  91652.,  91952.,  92252.,  92552.,  92852.,  93152.,
      93452.,  93752.,  94052.,  94352.,  94652.,  94952.,  95252.,  95552.,
      96452.,  96752.,  97052.,  97352.,  97652.,  97952.,  98252.,  98552.,
      98852.,  99152.,  99452.,  99752.,  100052., 100352., 101252., 101552.,
      101852., 102152., 102452., 102752., 103052., 103352., 103652., 103952.,
      104252., 104552., 104852., 105152., 106052., 106352., 106652., 106952.,
      107252., 107552., 107852., 108152., 108452., 108752., 109052., 109352.,
      109652., 109952.};
  const std::array<int, 4> in_shape = {{3, 10, 8, 2}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, SAME3x10x8x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1708615., 1720740., 1722570., 1734800., 2052870., 2067546., 2069490.,
      2084292., 2397773., 2415042., 2417016., 2434432., 2743240., 2763144.,
      2765064., 2785136., 2401133., 2418696., 2420082., 2437792., 2058630.,
      2073810., 2074746., 2090052., 1715815., 1728570., 1729140., 1742000.,
      2082440., 2096160., 2098160., 2112000., 2501712., 2518320., 2520432.,
      2537184., 2921688., 2941232., 2943360., 2963072., 3342272., 3364800.,
      3366848., 3389568., 2925272., 2945152., 2946608., 2966656., 2507856.,
      2525040., 2526000., 2543328., 2090120., 2104560., 2105120., 2119680.,
      2485865., 2501420., 2503110., 2518800., 2985498., 3004326., 3006030.,
      3025020., 3485699., 3507854., 3509464., 3531808., 3986360., 4011896.,
      4013304., 4039056., 3488163., 3510696., 3511550., 3534272., 2989722.,
      3009198., 3009606., 3029244., 2491145., 2507510., 2507580., 2524080.,
      2915050., 2932680., 2933580., 2951360., 3499620., 3520956., 3521676.,
      3543192., 4084430., 4109532., 4109952., 4135264., 4669360., 4698288.,
      4698288., 4727456., 4084430., 4109952., 4109532., 4135264., 3499620.,
      3521676., 3520956., 3543192., 2915050., 2933580., 2932680., 2951360.,
      2491145., 2507580., 2507510., 2524080., 2989722., 3009606., 3009198.,
      3029244., 3488163., 3511550., 3510696., 3534272., 3986360., 4013304.,
      4011896., 4039056., 3485699., 3509464., 3507854., 3531808., 2985498.,
      3006030., 3004326., 3025020., 2485865., 2503110., 2501420., 2518800.,
      2090120., 2105120., 2104560., 2119680., 2507856., 2526000., 2525040.,
      2543328., 2925272., 2946608., 2945152., 2966656., 3342272., 3366848.,
      3364800., 3389568., 2921688., 2943360., 2941232., 2963072., 2501712.,
      2520432., 2518320., 2537184., 2082440., 2098160., 2096160., 2112000.,
      1715815., 1729140., 1728570., 1742000., 2058630., 2074746., 2073810.,
      2090052., 2401133., 2420082., 2418696., 2437792., 2743240., 2765064.,
      2763144., 2785136., 2397773., 2417016., 2415042., 2434432., 2052870.,
      2069490., 2067546., 2084292., 1708615., 1722570., 1720740., 1734800.};
  const std::array<int, 4> in_shape = {{3, 10, 8, 2}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 256.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, VALID3x10x8x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      150040., 154504., 150616., 155104., 151192., 155704., 151768., 156304.,
      152344., 156904., 152920., 157504., 153496., 158104., 154072., 158704.,
      154648., 159304., 155224., 159904., 155800., 160504., 156376., 161104.,
      156952., 161704., 157528., 162304., 159256., 164104., 159832., 164704.,
      160408., 165304., 160984., 165904., 161560., 166504., 162136., 167104.,
      162712., 167704., 163288., 168304., 163864., 168904., 164440., 169504.,
      165016., 170104., 165592., 170704., 166168., 171304., 166744., 171904.,
      168472., 173704., 169048., 174304., 169624., 174904., 170200., 175504.,
      170776., 176104., 171352., 176704., 171928., 177304., 172504., 177904.,
      173080., 178504., 173656., 179104., 174232., 179704., 174808., 180304.,
      175384., 180904., 175960., 181504., 177688., 183304., 178264., 183904.,
      178840., 184504., 179416., 185104., 179992., 185704., 180568., 186304.,
      181144., 186904., 181720., 187504., 182296., 188104., 182872., 188704.,
      183448., 189304., 184024., 189904., 184600., 190504., 185176., 191104.,
      186904., 192904., 187480., 193504., 188056., 194104., 188632., 194704.,
      189208., 195304., 189784., 195904., 190360., 196504., 190936., 197104.,
      191512., 197704., 192088., 198304., 192664., 198904., 193240., 199504.,
      193816., 200104., 194392., 200704., 196120., 202504., 196696., 203104.,
      197272., 203704., 197848., 204304., 198424., 204904., 199000., 205504.,
      199576., 206104., 200152., 206704., 200728., 207304., 201304., 207904.,
      201880., 208504., 202456., 209104., 203032., 209704., 203608., 210304.,
      205336., 212104., 205912., 212704., 206488., 213304., 207064., 213904.,
      207640., 214504., 208216., 215104., 208792., 215704., 209368., 216304.,
      209944., 216904., 210520., 217504., 211096., 218104., 211672., 218704.,
      212248., 219304., 212824., 219904.};
  const std::array<int, 4> in_shape = {{3, 10, 8, 2}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, SAME3x10x8x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      6610225.,  6632590.,  6654955.,  6677320.,  6638030.,  6660500.,
      6682970.,  6705440.,  7912632.,  7939596.,  7966560.,  7993524.,
      7945746.,  7972836.,  7999926.,  8027016.,  9208101.,  9239706.,
      9271311.,  9302916.,  9246440.,  9278192.,  9309944.,  9341696.,
      10496464., 10532752., 10569040., 10605328., 10539944., 10576400.,
      10612856., 10649312., 9157183.,  9189082.,  9220981.,  9252880.,
      9194934.,  9226980.,  9259026.,  9291072.,  7825344.,  7852812.,
      7880280.,  7907748.,  7857450.,  7885044.,  7912638.,  7940232.,
      6501115.,  6524110.,  6547105.,  6570100.,  6527660.,  6550760.,
      6573860.,  6596960.,  7737720.,  7764240.,  7790760.,  7817280.,
      7769040.,  7795680.,  7822320.,  7848960.,  9259968.,  9291936.,
      9323904.,  9355872.,  9297264.,  9329376.,  9361488.,  9393600.,
      10773336., 10810800., 10848264., 10885728., 10816512., 10854144.,
      10891776., 10929408., 12277632., 12320640., 12363648., 12406656.,
      12326592., 12369792., 12412992., 12456192., 10708488., 10746288.,
      10784088., 10821888., 10750992., 10788960., 10826928., 10864896.,
      9148800.,  9181344.,  9213888.,  9246432.,  9184944.,  9217632.,
      9250320.,  9283008.,  7598760.,  7626000.,  7653240.,  7680480.,
      7628640.,  7656000.,  7683360.,  7710720.,  8842255.,  8873170.,
      8904085.,  8935000.,  8876610.,  8907660.,  8938710.,  8969760.,
      10578600., 10615860., 10653120., 10690380., 10619502., 10656924.,
      10694346., 10731768., 12303739., 12347398., 12391057., 12434716.,
      12351080., 12394928., 12438776., 12482624., 14017456., 14067568.,
      14117680., 14167792., 14071128., 14121456., 14171784., 14222112.,
      12222273., 12266310., 12310347., 12354384., 12268858., 12313084.,
      12357310., 12401536., 10438944., 10476852., 10514760., 10552668.,
      10478550., 10516620., 10554690., 10592760., 8667685.,  8699410.,
      8731135.,  8762860.,  8700420.,  8732280.,  8764140.,  8796000.,
      9916150.,  9951700.,  9987250.,  10022800., 9953060.,  9988760.,
      10024460., 10060160., 11859312., 11902152., 11944992., 11987832.,
      11903244., 11946264., 11989284., 12032304., 13788558., 13838748.,
      13888938., 13939128., 13839392., 13889792., 13940192., 13990592.,
      15703648., 15761248., 15818848., 15876448., 15761264., 15819104.,
      15876944., 15934784., 13687786., 13738396., 13789006., 13839616.,
      13737780., 13788600., 13839420., 13890240., 11686560., 11730120.,
      11773680., 11817240., 11729052., 11772792., 11816532., 11860272.,
      9700210.,  9736660.,  9773110.,  9809560.,  9735320.,  9771920.,
      9808520.,  9845120.,  9001695.,  9034770.,  9067845.,  9100920.,
      9034290.,  9067500.,  9100710.,  9133920.,  10762632., 10802484.,
      10842336., 10882188., 10801422., 10841436., 10881450., 10921464.,
      12509931., 12556614., 12603297., 12649980., 12554808., 12601680.,
      12648552., 12695424., 14243376., 14296944., 14350512., 14404080.,
      14294232., 14348016., 14401800., 14455584., 12411441., 12458502.,
      12505563., 12552624., 12455562., 12502812., 12550062., 12597312.,
      10593792., 10634292., 10674792., 10715292., 10631286., 10671948.,
      10712610., 10753272., 8790645.,  8824530.,  8858415.,  8892300.,
      8821620.,  8855640.,  8889660.,  8923680.,  8174200.,  8204560.,
      8234920.,  8265280.,  8202960.,  8233440.,  8263920.,  8294400.,
      9771456.,  9808032.,  9844608.,  9881184.,  9805680.,  9842400.,
      9879120.,  9915840.,  11355736., 11398576., 11441416., 11484256.,
      11395328., 11438336., 11481344., 11524352., 12926848., 12976000.,
      13025152., 13074304., 12971712., 13021056., 13070400., 13119744.,
      11262216., 11305392., 11348568., 11391744., 11301136., 11344480.,
      11387824., 11431168., 9611136.,  9648288.,  9685440.,  9722592.,
      9644208.,  9681504.,  9718800.,  9756096.,  7973800.,  8004880.,
      8035960.,  8067040.,  8001120.,  8032320.,  8063520.,  8094720.,
      7441345.,  7468750.,  7496155.,  7523560.,  7466750.,  7494260.,
      7521770.,  7549280.,  8895000.,  8928012.,  8961024.,  8994036.,
      8925234.,  8958372.,  8991510.,  9024648.,  10336725., 10375386.,
      10414047., 10452708., 10371704., 10410512., 10449320., 10488128.,
      11766352., 11810704., 11855056., 11899408., 11805992., 11850512.,
      11895032., 11939552., 10250863., 10289818., 10328773., 10367728.,
      10285254., 10324356., 10363458., 10402560., 8747808.,  8781324.,
      8814840.,  8848356.,  8777034.,  8810676.,  8844318.,  8877960.,
      7257355.,  7285390.,  7313425.,  7341460.,  7281500.,  7309640.,
      7337780.,  7365920.};
  const std::array<int, 4> in_shape = {{3, 10, 8, 2}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 512.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, VALID3x10x8x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      295616., 300080., 304544., 309008., 296744., 301232., 305720., 310208.,
      297872., 302384., 306896., 311408., 299000., 303536., 308072., 312608.,
      300128., 304688., 309248., 313808., 301256., 305840., 310424., 315008.,
      302384., 306992., 311600., 316208., 303512., 308144., 312776., 317408.,
      304640., 309296., 313952., 318608., 305768., 310448., 315128., 319808.,
      306896., 311600., 316304., 321008., 308024., 312752., 317480., 322208.,
      309152., 313904., 318656., 323408., 310280., 315056., 319832., 324608.,
      313664., 318512., 323360., 328208., 314792., 319664., 324536., 329408.,
      315920., 320816., 325712., 330608., 317048., 321968., 326888., 331808.,
      318176., 323120., 328064., 333008., 319304., 324272., 329240., 334208.,
      320432., 325424., 330416., 335408., 321560., 326576., 331592., 336608.,
      322688., 327728., 332768., 337808., 323816., 328880., 333944., 339008.,
      324944., 330032., 335120., 340208., 326072., 331184., 336296., 341408.,
      327200., 332336., 337472., 342608., 328328., 333488., 338648., 343808.,
      331712., 336944., 342176., 347408., 332840., 338096., 343352., 348608.,
      333968., 339248., 344528., 349808., 335096., 340400., 345704., 351008.,
      336224., 341552., 346880., 352208., 337352., 342704., 348056., 353408.,
      338480., 343856., 349232., 354608., 339608., 345008., 350408., 355808.,
      340736., 346160., 351584., 357008., 341864., 347312., 352760., 358208.,
      342992., 348464., 353936., 359408., 344120., 349616., 355112., 360608.,
      345248., 350768., 356288., 361808., 346376., 351920., 357464., 363008.,
      349760., 355376., 360992., 366608., 350888., 356528., 362168., 367808.,
      352016., 357680., 363344., 369008., 353144., 358832., 364520., 370208.,
      354272., 359984., 365696., 371408., 355400., 361136., 366872., 372608.,
      356528., 362288., 368048., 373808., 357656., 363440., 369224., 375008.,
      358784., 364592., 370400., 376208., 359912., 365744., 371576., 377408.,
      361040., 366896., 372752., 378608., 362168., 368048., 373928., 379808.,
      363296., 369200., 375104., 381008., 364424., 370352., 376280., 382208.,
      367808., 373808., 379808., 385808., 368936., 374960., 380984., 387008.,
      370064., 376112., 382160., 388208., 371192., 377264., 383336., 389408.,
      372320., 378416., 384512., 390608., 373448., 379568., 385688., 391808.,
      374576., 380720., 386864., 393008., 375704., 381872., 388040., 394208.,
      376832., 383024., 389216., 395408., 377960., 384176., 390392., 396608.,
      379088., 385328., 391568., 397808., 380216., 386480., 392744., 399008.,
      381344., 387632., 393920., 400208., 382472., 388784., 395096., 401408.,
      385856., 392240., 398624., 405008., 386984., 393392., 399800., 406208.,
      388112., 394544., 400976., 407408., 389240., 395696., 402152., 408608.,
      390368., 396848., 403328., 409808., 391496., 398000., 404504., 411008.,
      392624., 399152., 405680., 412208., 393752., 400304., 406856., 413408.,
      394880., 401456., 408032., 414608., 396008., 402608., 409208., 415808.,
      397136., 403760., 410384., 417008., 398264., 404912., 411560., 418208.,
      399392., 406064., 412736., 419408., 400520., 407216., 413912., 420608.,
      403904., 410672., 417440., 424208., 405032., 411824., 418616., 425408.,
      406160., 412976., 419792., 426608., 407288., 414128., 420968., 427808.,
      408416., 415280., 422144., 429008., 409544., 416432., 423320., 430208.,
      410672., 417584., 424496., 431408., 411800., 418736., 425672., 432608.,
      412928., 419888., 426848., 433808., 414056., 421040., 428024., 435008.,
      415184., 422192., 429200., 436208., 416312., 423344., 430376., 437408.,
      417440., 424496., 431552., 438608., 418568., 425648., 432728., 439808.};
  const std::array<int, 4> in_shape = {{3, 10, 8, 2}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, SAME3x10x8x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      3640750., 3654820., 3668890., 3682960., 4388517., 4405338., 4422159.,
      4438980., 5142627., 5162178., 5181729., 5201280., 5902996., 5925256.,
      5947516., 5969776., 5185852., 5205256., 5224660., 5244064., 4462617.,
      4479186., 4495755., 4512324., 3733375., 3747130., 3760885., 3774640.,
      4000560., 4016160., 4031760., 4047360., 4822104., 4840752., 4859400.,
      4878048., 5650568., 5672240., 5693912., 5715584., 6485856., 6510528.,
      6535200., 6559872., 5697664., 5719168., 5740672., 5762176., 4902840.,
      4921200., 4939560., 4957920., 4101480., 4116720., 4131960., 4147200.,
      4410810., 4427820., 4444830., 4461840., 5315643., 5335974., 5356305.,
      5376636., 6227781., 6251406., 6275031., 6298656., 7147116., 7174008.,
      7200900., 7227792., 6277404., 6300840., 6324276., 6347712., 5400711.,
      5420718., 5440725., 5460732., 4517145., 4533750., 4550355., 4566960.,
      4867660., 4885960., 4904260., 4922560., 5864526., 5886396., 5908266.,
      5930136., 6868890., 6894300., 6919710., 6945120., 7880632., 7909552.,
      7938472., 7967392., 6919696., 6944896., 6970096., 6995296., 5951622.,
      5973132., 5994642., 6016152., 4976530., 4994380., 5012230., 5030080.,
      4350210., 4366140., 4382070., 4398000., 5239275., 5258310., 5277345.,
      5296380., 6134429., 6156542., 6178655., 6200768., 7035564., 7060728.,
      7085892., 7111056., 6175540., 6197464., 6219388., 6241312., 5309751.,
      5328462., 5347173., 5365884., 4438305., 4453830., 4469355., 4484880.,
      3814320., 3828000., 3841680., 3855360., 4592472., 4608816., 4625160.,
      4641504., 5375496., 5394480., 5413464., 5432448., 6163296., 6184896.,
      6206496., 6228096., 5408256., 5427072., 5445888., 5464704., 4648632.,
      4664688., 4680744., 4696800., 3884520., 3897840., 3911160., 3924480.,
      3263830., 3275380., 3286930., 3298480., 3928725., 3942522., 3956319.,
      3970116., 4597467., 4613490., 4629513., 4645536., 5269972., 5288200.,
      5306428., 5324656., 4623220., 4639096., 4654972., 4670848., 3972873.,
      3986418., 3999963., 4013508., 3319015., 3330250., 3341485., 3352720.};
  const std::array<int, 4> in_shape = {{3, 10, 8, 4}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 512.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, VALID3x10x8x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      154204., 154504., 154804., 155104., 155404., 155704., 156004., 156304.,
      156604., 156904., 157204., 157504., 157804., 158104., 158404., 158704.,
      159004., 159304., 159604., 159904., 160204., 160504., 160804., 161104.,
      161404., 161704., 162004., 162304., 163804., 164104., 164404., 164704.,
      165004., 165304., 165604., 165904., 166204., 166504., 166804., 167104.,
      167404., 167704., 168004., 168304., 168604., 168904., 169204., 169504.,
      169804., 170104., 170404., 170704., 171004., 171304., 171604., 171904.,
      173404., 173704., 174004., 174304., 174604., 174904., 175204., 175504.,
      175804., 176104., 176404., 176704., 177004., 177304., 177604., 177904.,
      178204., 178504., 178804., 179104., 179404., 179704., 180004., 180304.,
      180604., 180904., 181204., 181504., 183004., 183304., 183604., 183904.,
      184204., 184504., 184804., 185104., 185404., 185704., 186004., 186304.,
      186604., 186904., 187204., 187504., 187804., 188104., 188404., 188704.,
      189004., 189304., 189604., 189904., 190204., 190504., 190804., 191104.,
      192604., 192904., 193204., 193504., 193804., 194104., 194404., 194704.,
      195004., 195304., 195604., 195904., 196204., 196504., 196804., 197104.,
      197404., 197704., 198004., 198304., 198604., 198904., 199204., 199504.,
      199804., 200104., 200404., 200704., 202204., 202504., 202804., 203104.,
      203404., 203704., 204004., 204304., 204604., 204904., 205204., 205504.,
      205804., 206104., 206404., 206704., 207004., 207304., 207604., 207904.,
      208204., 208504., 208804., 209104., 209404., 209704., 210004., 210304.,
      211804., 212104., 212404., 212704., 213004., 213304., 213604., 213904.,
      214204., 214504., 214804., 215104., 215404., 215704., 216004., 216304.,
      216604., 216904., 217204., 217504., 217804., 218104., 218404., 218704.,
      219004., 219304., 219604., 219904.};
  const std::array<int, 4> in_shape = {{3, 10, 8, 4}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, SAME3x10x8x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      7257355.,  7281500.,  7285390.,  7309640.,  7313425.,  7337780.,
      7341460.,  7365920.,  8747808.,  8777034.,  8781324.,  8810676.,
      8814840.,  8844318.,  8848356.,  8877960.,  10250863., 10285254.,
      10289818., 10324356., 10328773., 10363458., 10367728., 10402560.,
      11766352., 11805992., 11810704., 11850512., 11855056., 11895032.,
      11899408., 11939552., 10336725., 10371704., 10375386., 10410512.,
      10414047., 10449320., 10452708., 10488128., 8895000.,  8925234.,
      8928012.,  8958372.,  8961024.,  8991510.,  8994036.,  9024648.,
      7441345.,  7466750.,  7468750.,  7494260.,  7496155.,  7521770.,
      7523560.,  7549280.,  7973800.,  8001120.,  8004880.,  8032320.,
      8035960.,  8063520.,  8067040.,  8094720.,  9611136.,  9644208.,
      9648288.,  9681504.,  9685440.,  9718800.,  9722592.,  9756096.,
      11262216., 11301136., 11305392., 11344480., 11348568., 11387824.,
      11391744., 11431168., 12926848., 12971712., 12976000., 13021056.,
      13025152., 13070400., 13074304., 13119744., 11355736., 11395328.,
      11398576., 11438336., 11441416., 11481344., 11484256., 11524352.,
      9771456.,  9805680.,  9808032.,  9842400.,  9844608.,  9879120.,
      9881184.,  9915840.,  8174200.,  8202960.,  8204560.,  8233440.,
      8234920.,  8263920.,  8265280.,  8294400.,  8790645.,  8821620.,
      8824530.,  8855640.,  8858415.,  8889660.,  8892300.,  8923680.,
      10593792., 10631286., 10634292., 10671948., 10674792., 10712610.,
      10715292., 10753272., 12411441., 12455562., 12458502., 12502812.,
      12505563., 12550062., 12552624., 12597312., 14243376., 14294232.,
      14296944., 14348016., 14350512., 14401800., 14404080., 14455584.,
      12509931., 12554808., 12556614., 12601680., 12603297., 12648552.,
      12649980., 12695424., 10762632., 10801422., 10802484., 10841436.,
      10842336., 10881450., 10882188., 10921464., 9001695.,  9034290.,
      9034770.,  9067500.,  9067845.,  9100710.,  9100920.,  9133920.,
      9700210.,  9735320.,  9736660.,  9771920.,  9773110.,  9808520.,
      9809560.,  9845120.,  11686560., 11729052., 11730120., 11772792.,
      11773680., 11816532., 11817240., 11860272., 13687786., 13737780.,
      13738396., 13788600., 13789006., 13839420., 13839616., 13890240.,
      15703648., 15761264., 15761248., 15819104., 15818848., 15876944.,
      15876448., 15934784., 13788558., 13839392., 13838748., 13889792.,
      13888938., 13940192., 13939128., 13990592., 11859312., 11903244.,
      11902152., 11946264., 11944992., 11989284., 11987832., 12032304.,
      9916150.,  9953060.,  9951700.,  9988760.,  9987250.,  10024460.,
      10022800., 10060160., 8667685.,  8700420.,  8699410.,  8732280.,
      8731135.,  8764140.,  8762860.,  8796000.,  10438944., 10478550.,
      10476852., 10516620., 10514760., 10554690., 10552668., 10592760.,
      12222273., 12268858., 12266310., 12313084., 12310347., 12357310.,
      12354384., 12401536., 14017456., 14071128., 14067568., 14121456.,
      14117680., 14171784., 14167792., 14222112., 12303739., 12351080.,
      12347398., 12394928., 12391057., 12438776., 12434716., 12482624.,
      10578600., 10619502., 10615860., 10656924., 10653120., 10694346.,
      10690380., 10731768., 8842255.,  8876610.,  8873170.,  8907660.,
      8904085.,  8938710.,  8935000.,  8969760.,  7598760.,  7628640.,
      7626000.,  7656000.,  7653240.,  7683360.,  7680480.,  7710720.,
      9148800.,  9184944.,  9181344.,  9217632.,  9213888.,  9250320.,
      9246432.,  9283008.,  10708488., 10750992., 10746288., 10788960.,
      10784088., 10826928., 10821888., 10864896., 12277632., 12326592.,
      12320640., 12369792., 12363648., 12412992., 12406656., 12456192.,
      10773336., 10816512., 10810800., 10854144., 10848264., 10891776.,
      10885728., 10929408., 9259968.,  9297264.,  9291936.,  9329376.,
      9323904.,  9361488.,  9355872.,  9393600.,  7737720.,  7769040.,
      7764240.,  7795680.,  7790760.,  7822320.,  7817280.,  7848960.,
      6501115.,  6527660.,  6524110.,  6550760.,  6547105.,  6573860.,
      6570100.,  6596960.,  7825344.,  7857450.,  7852812.,  7885044.,
      7880280.,  7912638.,  7907748.,  7940232.,  9157183.,  9194934.,
      9189082.,  9226980.,  9220981.,  9259026.,  9252880.,  9291072.,
      10496464., 10539944., 10532752., 10576400., 10569040., 10612856.,
      10605328., 10649312., 9208101.,  9246440.,  9239706.,  9278192.,
      9271311.,  9309944.,  9302916.,  9341696.,  7912632.,  7945746.,
      7939596.,  7972836.,  7966560.,  7999926.,  7993524.,  8027016.,
      6610225.,  6638030.,  6632590.,  6660500.,  6654955.,  6682970.,
      6677320.,  6705440.};
  const std::array<int, 4> in_shape = {{3, 10, 8, 4}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 512.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, VALID3x10x8x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      299504., 308408., 300080., 309008., 300656., 309608., 301232., 310208.,
      301808., 310808., 302384., 311408., 302960., 312008., 303536., 312608.,
      304112., 313208., 304688., 313808., 305264., 314408., 305840., 315008.,
      306416., 315608., 306992., 316208., 307568., 316808., 308144., 317408.,
      308720., 318008., 309296., 318608., 309872., 319208., 310448., 319808.,
      311024., 320408., 311600., 321008., 312176., 321608., 312752., 322208.,
      313328., 322808., 313904., 323408., 314480., 324008., 315056., 324608.,
      317936., 327608., 318512., 328208., 319088., 328808., 319664., 329408.,
      320240., 330008., 320816., 330608., 321392., 331208., 321968., 331808.,
      322544., 332408., 323120., 333008., 323696., 333608., 324272., 334208.,
      324848., 334808., 325424., 335408., 326000., 336008., 326576., 336608.,
      327152., 337208., 327728., 337808., 328304., 338408., 328880., 339008.,
      329456., 339608., 330032., 340208., 330608., 340808., 331184., 341408.,
      331760., 342008., 332336., 342608., 332912., 343208., 333488., 343808.,
      336368., 346808., 336944., 347408., 337520., 348008., 338096., 348608.,
      338672., 349208., 339248., 349808., 339824., 350408., 340400., 351008.,
      340976., 351608., 341552., 352208., 342128., 352808., 342704., 353408.,
      343280., 354008., 343856., 354608., 344432., 355208., 345008., 355808.,
      345584., 356408., 346160., 357008., 346736., 357608., 347312., 358208.,
      347888., 358808., 348464., 359408., 349040., 360008., 349616., 360608.,
      350192., 361208., 350768., 361808., 351344., 362408., 351920., 363008.,
      354800., 366008., 355376., 366608., 355952., 367208., 356528., 367808.,
      357104., 368408., 357680., 369008., 358256., 369608., 358832., 370208.,
      359408., 370808., 359984., 371408., 360560., 372008., 361136., 372608.,
      361712., 373208., 362288., 373808., 362864., 374408., 363440., 375008.,
      364016., 375608., 364592., 376208., 365168., 376808., 365744., 377408.,
      366320., 378008., 366896., 378608., 367472., 379208., 368048., 379808.,
      368624., 380408., 369200., 381008., 369776., 381608., 370352., 382208.,
      373232., 385208., 373808., 385808., 374384., 386408., 374960., 387008.,
      375536., 387608., 376112., 388208., 376688., 388808., 377264., 389408.,
      377840., 390008., 378416., 390608., 378992., 391208., 379568., 391808.,
      380144., 392408., 380720., 393008., 381296., 393608., 381872., 394208.,
      382448., 394808., 383024., 395408., 383600., 396008., 384176., 396608.,
      384752., 397208., 385328., 397808., 385904., 398408., 386480., 399008.,
      387056., 399608., 387632., 400208., 388208., 400808., 388784., 401408.,
      391664., 404408., 392240., 405008., 392816., 405608., 393392., 406208.,
      393968., 406808., 394544., 407408., 395120., 408008., 395696., 408608.,
      396272., 409208., 396848., 409808., 397424., 410408., 398000., 411008.,
      398576., 411608., 399152., 412208., 399728., 412808., 400304., 413408.,
      400880., 414008., 401456., 414608., 402032., 415208., 402608., 415808.,
      403184., 416408., 403760., 417008., 404336., 417608., 404912., 418208.,
      405488., 418808., 406064., 419408., 406640., 420008., 407216., 420608.,
      410096., 423608., 410672., 424208., 411248., 424808., 411824., 425408.,
      412400., 426008., 412976., 426608., 413552., 427208., 414128., 427808.,
      414704., 428408., 415280., 429008., 415856., 429608., 416432., 430208.,
      417008., 430808., 417584., 431408., 418160., 432008., 418736., 432608.,
      419312., 433208., 419888., 433808., 420464., 434408., 421040., 435008.,
      421616., 435608., 422192., 436208., 422768., 436808., 423344., 437408.,
      423920., 438008., 424496., 438608., 425072., 439208., 425648., 439808.};
  const std::array<int, 4> in_shape = {{3, 10, 8, 4}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, SAME3x10x8x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1416645., 1429270., 1441895., 1454520., 1430370., 1443100., 1455830.,
      1468560., 1444095., 1456930., 1469765., 1482600., 1457820., 1470760.,
      1483700., 1496640., 1703958., 1719360., 1734762., 1750164., 1720176.,
      1735704., 1751232., 1766760., 1736394., 1752048., 1767702., 1783356.,
      1752612., 1768392., 1784172., 1799952., 1991815., 2010078., 2028341.,
      2046604., 2010442., 2028852., 2047262., 2065672., 2029069., 2047626.,
      2066183., 2084740., 2047696., 2066400., 2085104., 2103808., 2279880.,
      2301088., 2322296., 2343504., 2300832., 2322208., 2343584., 2364960.,
      2321784., 2343328., 2364872., 2386416., 2342736., 2364448., 2386160.,
      2407872., 1990919., 2009770., 2028621., 2047472., 2008958., 2027956.,
      2046954., 2065952., 2026997., 2046142., 2065287., 2084432., 2045036.,
      2064328., 2083620., 2102912., 1702422., 1718832., 1735242., 1751652.,
      1717632., 1734168., 1750704., 1767240., 1732842., 1749504., 1766166.,
      1782828., 1748052., 1764840., 1781628., 1798416., 1414725., 1428610.,
      1442495., 1456380., 1427190., 1441180., 1455170., 1469160., 1439655.,
      1453750., 1467845., 1481940., 1452120., 1466320., 1480520., 1494720.,
      1842840., 1857360., 1871880., 1886400., 1858800., 1873440., 1888080.,
      1902720., 1874760., 1889520., 1904280., 1919040., 1890720., 1905600.,
      1920480., 1935360., 2216400., 2234112., 2251824., 2269536., 2235264.,
      2253120., 2270976., 2288832., 2254128., 2272128., 2290128., 2308128.,
      2272992., 2291136., 2309280., 2327424., 2590728., 2611728., 2632728.,
      2653728., 2612400., 2633568., 2654736., 2675904., 2634072., 2655408.,
      2676744., 2698080., 2655744., 2677248., 2698752., 2720256., 2965440.,
      2989824., 3014208., 3038592., 2989824., 3014400., 3038976., 3063552.,
      3014208., 3038976., 3063744., 3088512., 3038592., 3063552., 3088512.,
      3113472., 2590728., 2612400., 2634072., 2655744., 2611728., 2633568.,
      2655408., 2677248., 2632728., 2654736., 2676744., 2698752., 2653728.,
      2675904., 2698080., 2720256., 2216400., 2235264., 2254128., 2272992.,
      2234112., 2253120., 2272128., 2291136., 2251824., 2270976., 2290128.,
      2309280., 2269536., 2288832., 2308128., 2327424., 1842840., 1858800.,
      1874760., 1890720., 1857360., 1873440., 1889520., 1905600., 1871880.,
      1888080., 1904280., 1920480., 1886400., 1902720., 1919040., 1935360.,
      2319595., 2335210., 2350825., 2366440., 2337310., 2353060., 2368810.,
      2384560., 2355025., 2370910., 2386795., 2402680., 2372740., 2388760.,
      2404780., 2420800., 2790282., 2809344., 2828406., 2847468., 2811216.,
      2830440., 2849664., 2868888., 2832150., 2851536., 2870922., 2890308.,
      2853084., 2872632., 2892180., 2911728., 3262217., 3284834., 3307451.,
      3330068., 3286262., 3309068., 3331874., 3354680., 3310307., 3333302.,
      3356297., 3379292., 3334352., 3357536., 3380720., 3403904., 3734968.,
      3761248., 3787528., 3813808., 3762016., 3788512., 3815008., 3841504.,
      3789064., 3815776., 3842488., 3869200., 3816112., 3843040., 3869968.,
      3896896., 3264905., 3288278., 3311651., 3335024., 3288194., 3311756.,
      3335318., 3358880., 3311483., 3335234., 3358985., 3382736., 3334772.,
      3358712., 3382652., 3406592., 2794890., 2815248., 2835606., 2855964.,
      2814528., 2835048., 2855568., 2876088., 2834166., 2854848., 2875530.,
      2896212., 2853804., 2874648., 2895492., 2916336., 2325355., 2342590.,
      2359825., 2377060., 2341450., 2358820., 2376190., 2393560., 2357545.,
      2375050., 2392555., 2410060., 2373640., 2391280., 2408920., 2426560.,
      2940350., 2957540., 2974730., 2991920., 2959340., 2976680., 2994020.,
      3011360., 2978330., 2995820., 3013310., 3030800., 2997320., 3014960.,
      3032600., 3050240., 3534660., 3555648., 3576636., 3597624., 3557088.,
      3578256., 3599424., 3620592., 3579516., 3600864., 3622212., 3643560.,
      3601944., 3623472., 3645000., 3666528., 4129930., 4154836., 4179742.,
      4204648., 4155676., 4180792., 4205908., 4231024., 4181422., 4206748.,
      4232074., 4257400., 4207168., 4232704., 4258240., 4283776., 4725680.,
      4754624., 4783568., 4812512., 4754624., 4783808., 4812992., 4842176.,
      4783568., 4812992., 4842416., 4871840., 4812512., 4842176., 4871840.,
      4901504., 4129930., 4155676., 4181422., 4207168., 4154836., 4180792.,
      4206748., 4232704., 4179742., 4205908., 4232074., 4258240., 4204648.,
      4231024., 4257400., 4283776., 3534660., 3557088., 3579516., 3601944.,
      3555648., 3578256., 3600864., 3623472., 3576636., 3599424., 3622212.,
      3645000., 3597624., 3620592., 3643560., 3666528., 2940350., 2959340.,
      2978330., 2997320., 2957540., 2976680., 2995820., 3014960., 2974730.,
      2994020., 3013310., 3032600., 2991920., 3011360., 3030800., 3050240.,
      2325355., 2341450., 2357545., 2373640., 2342590., 2358820., 2375050.,
      2391280., 2359825., 2376190., 2392555., 2408920., 2377060., 2393560.,
      2410060., 2426560., 2794890., 2814528., 2834166., 2853804., 2815248.,
      2835048., 2854848., 2874648., 2835606., 2855568., 2875530., 2895492.,
      2855964., 2876088., 2896212., 2916336., 3264905., 3288194., 3311483.,
      3334772., 3288278., 3311756., 3335234., 3358712., 3311651., 3335318.,
      3358985., 3382652., 3335024., 3358880., 3382736., 3406592., 3734968.,
      3762016., 3789064., 3816112., 3761248., 3788512., 3815776., 3843040.,
      3787528., 3815008., 3842488., 3869968., 3813808., 3841504., 3869200.,
      3896896., 3262217., 3286262., 3310307., 3334352., 3284834., 3309068.,
      3333302., 3357536., 3307451., 3331874., 3356297., 3380720., 3330068.,
      3354680., 3379292., 3403904., 2790282., 2811216., 2832150., 2853084.,
      2809344., 2830440., 2851536., 2872632., 2828406., 2849664., 2870922.,
      2892180., 2847468., 2868888., 2890308., 2911728., 2319595., 2337310.,
      2355025., 2372740., 2335210., 2353060., 2370910., 2388760., 2350825.,
      2368810., 2386795., 2404780., 2366440., 2384560., 2402680., 2420800.,
      1842840., 1857360., 1871880., 1886400., 1858800., 1873440., 1888080.,
      1902720., 1874760., 1889520., 1904280., 1919040., 1890720., 1905600.,
      1920480., 1935360., 2216400., 2234112., 2251824., 2269536., 2235264.,
      2253120., 2270976., 2288832., 2254128., 2272128., 2290128., 2308128.,
      2272992., 2291136., 2309280., 2327424., 2590728., 2611728., 2632728.,
      2653728., 2612400., 2633568., 2654736., 2675904., 2634072., 2655408.,
      2676744., 2698080., 2655744., 2677248., 2698752., 2720256., 2965440.,
      2989824., 3014208., 3038592., 2989824., 3014400., 3038976., 3063552.,
      3014208., 3038976., 3063744., 3088512., 3038592., 3063552., 3088512.,
      3113472., 2590728., 2612400., 2634072., 2655744., 2611728., 2633568.,
      2655408., 2677248., 2632728., 2654736., 2676744., 2698752., 2653728.,
      2675904., 2698080., 2720256., 2216400., 2235264., 2254128., 2272992.,
      2234112., 2253120., 2272128., 2291136., 2251824., 2270976., 2290128.,
      2309280., 2269536., 2288832., 2308128., 2327424., 1842840., 1858800.,
      1874760., 1890720., 1857360., 1873440., 1889520., 1905600., 1871880.,
      1888080., 1904280., 1920480., 1886400., 1902720., 1919040., 1935360.,
      1414725., 1427190., 1439655., 1452120., 1428610., 1441180., 1453750.,
      1466320., 1442495., 1455170., 1467845., 1480520., 1456380., 1469160.,
      1481940., 1494720., 1702422., 1717632., 1732842., 1748052., 1718832.,
      1734168., 1749504., 1764840., 1735242., 1750704., 1766166., 1781628.,
      1751652., 1767240., 1782828., 1798416., 1990919., 2008958., 2026997.,
      2045036., 2009770., 2027956., 2046142., 2064328., 2028621., 2046954.,
      2065287., 2083620., 2047472., 2065952., 2084432., 2102912., 2279880.,
      2300832., 2321784., 2342736., 2301088., 2322208., 2343328., 2364448.,
      2322296., 2343584., 2364872., 2386160., 2343504., 2364960., 2386416.,
      2407872., 1991815., 2010442., 2029069., 2047696., 2010078., 2028852.,
      2047626., 2066400., 2028341., 2047262., 2066183., 2085104., 2046604.,
      2065672., 2084740., 2103808., 1703958., 1720176., 1736394., 1752612.,
      1719360., 1735704., 1752048., 1768392., 1734762., 1751232., 1767702.,
      1784172., 1750164., 1766760., 1783356., 1799952., 1416645., 1430370.,
      1444095., 1457820., 1429270., 1443100., 1456930., 1470760., 1441895.,
      1455830., 1469765., 1483700., 1454520., 1468560., 1482600., 1496640.};
  const std::array<int, 4> in_shape = {{3, 10, 8, 4}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 256.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, VALID3x10x8x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      590104., 599008., 607912., 616816., 591232., 600160., 609088., 618016.,
      592360., 601312., 610264., 619216., 593488., 602464., 611440., 620416.,
      594616., 603616., 612616., 621616., 595744., 604768., 613792., 622816.,
      596872., 605920., 614968., 624016., 598000., 607072., 616144., 625216.,
      599128., 608224., 617320., 626416., 600256., 609376., 618496., 627616.,
      601384., 610528., 619672., 628816., 602512., 611680., 620848., 630016.,
      603640., 612832., 622024., 631216., 604768., 613984., 623200., 632416.,
      605896., 615136., 624376., 633616., 607024., 616288., 625552., 634816.,
      608152., 617440., 626728., 636016., 609280., 618592., 627904., 637216.,
      610408., 619744., 629080., 638416., 611536., 620896., 630256., 639616.,
      612664., 622048., 631432., 640816., 613792., 623200., 632608., 642016.,
      614920., 624352., 633784., 643216., 616048., 625504., 634960., 644416.,
      617176., 626656., 636136., 645616., 618304., 627808., 637312., 646816.,
      619432., 628960., 638488., 648016., 620560., 630112., 639664., 649216.,
      626200., 635872., 645544., 655216., 627328., 637024., 646720., 656416.,
      628456., 638176., 647896., 657616., 629584., 639328., 649072., 658816.,
      630712., 640480., 650248., 660016., 631840., 641632., 651424., 661216.,
      632968., 642784., 652600., 662416., 634096., 643936., 653776., 663616.,
      635224., 645088., 654952., 664816., 636352., 646240., 656128., 666016.,
      637480., 647392., 657304., 667216., 638608., 648544., 658480., 668416.,
      639736., 649696., 659656., 669616., 640864., 650848., 660832., 670816.,
      641992., 652000., 662008., 672016., 643120., 653152., 663184., 673216.,
      644248., 654304., 664360., 674416., 645376., 655456., 665536., 675616.,
      646504., 656608., 666712., 676816., 647632., 657760., 667888., 678016.,
      648760., 658912., 669064., 679216., 649888., 660064., 670240., 680416.,
      651016., 661216., 671416., 681616., 652144., 662368., 672592., 682816.,
      653272., 663520., 673768., 684016., 654400., 664672., 674944., 685216.,
      655528., 665824., 676120., 686416., 656656., 666976., 677296., 687616.,
      662296., 672736., 683176., 693616., 663424., 673888., 684352., 694816.,
      664552., 675040., 685528., 696016., 665680., 676192., 686704., 697216.,
      666808., 677344., 687880., 698416., 667936., 678496., 689056., 699616.,
      669064., 679648., 690232., 700816., 670192., 680800., 691408., 702016.,
      671320., 681952., 692584., 703216., 672448., 683104., 693760., 704416.,
      673576., 684256., 694936., 705616., 674704., 685408., 696112., 706816.,
      675832., 686560., 697288., 708016., 676960., 687712., 698464., 709216.,
      678088., 688864., 699640., 710416., 679216., 690016., 700816., 711616.,
      680344., 691168., 701992., 712816., 681472., 692320., 703168., 714016.,
      682600., 693472., 704344., 715216., 683728., 694624., 705520., 716416.,
      684856., 695776., 706696., 717616., 685984., 696928., 707872., 718816.,
      687112., 698080., 709048., 720016., 688240., 699232., 710224., 721216.,
      689368., 700384., 711400., 722416., 690496., 701536., 712576., 723616.,
      691624., 702688., 713752., 724816., 692752., 703840., 714928., 726016.,
      698392., 709600., 720808., 732016., 699520., 710752., 721984., 733216.,
      700648., 711904., 723160., 734416., 701776., 713056., 724336., 735616.,
      702904., 714208., 725512., 736816., 704032., 715360., 726688., 738016.,
      705160., 716512., 727864., 739216., 706288., 717664., 729040., 740416.,
      707416., 718816., 730216., 741616., 708544., 719968., 731392., 742816.,
      709672., 721120., 732568., 744016., 710800., 722272., 733744., 745216.,
      711928., 723424., 734920., 746416., 713056., 724576., 736096., 747616.,
      714184., 725728., 737272., 748816., 715312., 726880., 738448., 750016.,
      716440., 728032., 739624., 751216., 717568., 729184., 740800., 752416.,
      718696., 730336., 741976., 753616., 719824., 731488., 743152., 754816.,
      720952., 732640., 744328., 756016., 722080., 733792., 745504., 757216.,
      723208., 734944., 746680., 758416., 724336., 736096., 747856., 759616.,
      725464., 737248., 749032., 760816., 726592., 738400., 750208., 762016.,
      727720., 739552., 751384., 763216., 728848., 740704., 752560., 764416.,
      734488., 746464., 758440., 770416., 735616., 747616., 759616., 771616.,
      736744., 748768., 760792., 772816., 737872., 749920., 761968., 774016.,
      739000., 751072., 763144., 775216., 740128., 752224., 764320., 776416.,
      741256., 753376., 765496., 777616., 742384., 754528., 766672., 778816.,
      743512., 755680., 767848., 780016., 744640., 756832., 769024., 781216.,
      745768., 757984., 770200., 782416., 746896., 759136., 771376., 783616.,
      748024., 760288., 772552., 784816., 749152., 761440., 773728., 786016.,
      750280., 762592., 774904., 787216., 751408., 763744., 776080., 788416.,
      752536., 764896., 777256., 789616., 753664., 766048., 778432., 790816.,
      754792., 767200., 779608., 792016., 755920., 768352., 780784., 793216.,
      757048., 769504., 781960., 794416., 758176., 770656., 783136., 795616.,
      759304., 771808., 784312., 796816., 760432., 772960., 785488., 798016.,
      761560., 774112., 786664., 799216., 762688., 775264., 787840., 800416.,
      763816., 776416., 789016., 801616., 764944., 777568., 790192., 802816.,
      770584., 783328., 796072., 808816., 771712., 784480., 797248., 810016.,
      772840., 785632., 798424., 811216., 773968., 786784., 799600., 812416.,
      775096., 787936., 800776., 813616., 776224., 789088., 801952., 814816.,
      777352., 790240., 803128., 816016., 778480., 791392., 804304., 817216.,
      779608., 792544., 805480., 818416., 780736., 793696., 806656., 819616.,
      781864., 794848., 807832., 820816., 782992., 796000., 809008., 822016.,
      784120., 797152., 810184., 823216., 785248., 798304., 811360., 824416.,
      786376., 799456., 812536., 825616., 787504., 800608., 813712., 826816.,
      788632., 801760., 814888., 828016., 789760., 802912., 816064., 829216.,
      790888., 804064., 817240., 830416., 792016., 805216., 818416., 831616.,
      793144., 806368., 819592., 832816., 794272., 807520., 820768., 834016.,
      795400., 808672., 821944., 835216., 796528., 809824., 823120., 836416.,
      797656., 810976., 824296., 837616., 798784., 812128., 825472., 838816.,
      799912., 813280., 826648., 840016., 801040., 814432., 827824., 841216.,
      806680., 820192., 833704., 847216., 807808., 821344., 834880., 848416.,
      808936., 822496., 836056., 849616., 810064., 823648., 837232., 850816.,
      811192., 824800., 838408., 852016., 812320., 825952., 839584., 853216.,
      813448., 827104., 840760., 854416., 814576., 828256., 841936., 855616.,
      815704., 829408., 843112., 856816., 816832., 830560., 844288., 858016.,
      817960., 831712., 845464., 859216., 819088., 832864., 846640., 860416.,
      820216., 834016., 847816., 861616., 821344., 835168., 848992., 862816.,
      822472., 836320., 850168., 864016., 823600., 837472., 851344., 865216.,
      824728., 838624., 852520., 866416., 825856., 839776., 853696., 867616.,
      826984., 840928., 854872., 868816., 828112., 842080., 856048., 870016.,
      829240., 843232., 857224., 871216., 830368., 844384., 858400., 872416.,
      831496., 845536., 859576., 873616., 832624., 846688., 860752., 874816.,
      833752., 847840., 861928., 876016., 834880., 848992., 863104., 877216.,
      836008., 850144., 864280., 878416., 837136., 851296., 865456., 879616.};
  const std::array<int, 4> in_shape = {{3, 10, 8, 4}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, SAME3x10x9x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      3006633., 3510066., 4014108., 4518738., 4018644., 3518004., 3016839.,
      3467256., 4047036., 4627296., 5208012., 4630752., 4053084., 3475032.,
      3931281., 4587786., 5244588., 5901660., 5246532., 4591188., 3935655.,
      4397250., 5130615., 5864040., 6597495., 5864040., 5130615., 4397250.,
      3935655., 4591188., 5246532., 5901660., 5244588., 4587786., 3931281.,
      3475032., 4053084., 4630752., 5208012., 4627296., 4047036., 3467256.,
      3016839., 3518004., 4018644., 4518738., 4014108., 3510066., 3006633.};
  const std::array<int, 4> in_shape = {{3, 10, 9, 1}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, VALID3x10x9x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      97422.,  98088.,  98754.,  99420.,  100086., 100752., 101418.,
      103416., 104082., 104748., 105414., 106080., 106746., 107412.,
      109410., 110076., 110742., 111408., 112074., 112740., 113406.,
      115404., 116070., 116736., 117402., 118068., 118734., 119400.,
      121398., 122064., 122730., 123396., 124062., 124728., 125394.,
      127392., 128058., 128724., 129390., 130056., 130722., 131388.,
      133386., 134052., 134718., 135384., 136050., 136716., 137382.};
  const std::array<int, 4> in_shape = {{3, 10, 9, 1}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, SAME3x10x9x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5998083.,  6013266.,  7002345.,  7020132.,  8007804.,  8028216.,
      9014418.,  9037476.,  8016708.,  8037288.,  7017927.,  7036008.,
      6018117.,  6033678.,  6916512.,  6934512.,  8072988.,  8094072.,
      9230400.,  9254592.,  10388700., 10416024., 9237120.,  9261504.,
      8084748.,  8106168.,  6931632.,  6950064.,  7841583.,  7862562.,
      9151002.,  9175572.,  10460988., 10489176., 11771487., 11803320.,
      10464660., 10493064., 9157428.,  9182376.,  7849845.,  7871310.,
      8770380.,  8794500.,  10232985., 10261230., 11695680., 11728080.,
      13158405., 13194990., 11695440., 11728080., 10232565., 10261230.,
      8769840.,  8794500.,  7848873.,  7871310.,  9156105.,  9182376.,
      10462932., 10493064., 11769300., 11803320., 10458828., 10489176.,
      9148923.,  9175572.,  7839639.,  7862562.,  6929472.,  6950064.,
      8082060.,  8106168.,  9233856.,  9261504.,  10384812., 10416024.,
      9226752.,  9254592.,  8069628.,  8094072.,  6913488.,  6934512.,
      6015093.,  6033678.,  7014252.,  7036008.,  8012340.,  8037288.,
      9009315.,  9037476.,  8003100.,  8028216.,  6998082.,  7020132.,
      5994303.,  6013266.};
  const std::array<int, 4> in_shape = {{3, 10, 9, 1}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, VALID3x10x9x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      191046., 194844., 192342., 196176., 193638., 197508., 194934., 198840.,
      196230., 200172., 197526., 201504., 198822., 202836., 202710., 206832.,
      204006., 208164., 205302., 209496., 206598., 210828., 207894., 212160.,
      209190., 213492., 210486., 214824., 214374., 218820., 215670., 220152.,
      216966., 221484., 218262., 222816., 219558., 224148., 220854., 225480.,
      222150., 226812., 226038., 230808., 227334., 232140., 228630., 233472.,
      229926., 234804., 231222., 236136., 232518., 237468., 233814., 238800.,
      237702., 242796., 238998., 244128., 240294., 245460., 241590., 246792.,
      242886., 248124., 244182., 249456., 245478., 250788., 249366., 254784.,
      250662., 256116., 251958., 257448., 253254., 258780., 254550., 260112.,
      255846., 261444., 257142., 262776., 261030., 266772., 262326., 268104.,
      263622., 269436., 264918., 270768., 266214., 272100., 267510., 273432.,
      268806., 274764.};
  const std::array<int, 4> in_shape = {{3, 10, 9, 1}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, SAME3x10x9x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      3834551., 3849734., 3864917., 3880100., 4552791., 4570578., 4588365.,
      4606152., 5317436., 5337848., 5358260., 5378672., 6077714., 6100772.,
      6123830., 6146888., 5445668., 5466248., 5486828., 5507408., 4819181.,
      4837262., 4855343., 4873424., 4198337., 4213898., 4229459., 4245020.,
      4694768., 4712768., 4730768., 4748768., 5556700., 5577784., 5598868.,
      5619952., 6468608., 6492800., 6516992., 6541184., 7375100., 7402424.,
      7429748., 7457072., 6597568., 6621952., 6646336., 6670720., 5826668.,
      5848088., 5869508., 5890928., 5062496., 5080928., 5099360., 5117792.,
      5540459., 5561438., 5582417., 5603396., 6542906., 6567476., 6592046.,
      6616616., 7598684., 7626872., 7655060., 7683248., 8647781., 8679614.,
      8711447., 8743280., 7726644., 7755048., 7783452., 7811856., 6813428.,
      6838376., 6863324., 6888272., 5908241., 5929706., 5951171., 5972636.,
      6365792., 6389912., 6414032., 6438152., 7504605., 7532850., 7561095.,
      7589340., 8699888., 8732288., 8764688., 8797088., 9887009., 9923594.,
      9960179., 9996764., 8825120., 8857760., 8890400., 8923040., 7772657.,
      7801322., 7829987., 7858652., 6729740., 6754400., 6779060., 6803720.,
      6275501., 6297938., 6320375., 6342812., 7404915., 7431186., 7457457.,
      7483728., 8595956., 8626088., 8656220., 8686352., 9779396., 9813416.,
      9847436., 9881456., 8734988., 8765336., 8795684., 8826032., 7699421.,
      7726070., 7752719., 7779368., 6672803., 6695726., 6718649., 6741572.,
      6133776., 6154368., 6174960., 6195552., 7129836., 7153944., 7178052.,
      7202160., 8192384., 8220032., 8247680., 8275328., 9247596., 9278808.,
      9310020., 9341232., 8204608., 8232448., 8260288., 8288128., 7169660.,
      7194104., 7218548., 7242992., 6142848., 6163872., 6184896., 6205920.,
      5379153., 5397738., 5416323., 5434908., 6250972., 6272728., 6294484.,
      6316240., 7194356., 7219304., 7244252., 7269200., 8130885., 8159046.,
      8187207., 8215368., 7215132., 7240248., 7265364., 7290480., 6306914.,
      6328964., 6351014., 6373064., 5406315., 5425278., 5444241., 5463204.};
  const std::array<int, 4> in_shape = {{3, 10, 9, 1}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 512.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, VALID3x10x9x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      378294., 382092., 385890., 389688., 380850., 384684., 388518., 392352.,
      383406., 387276., 391146., 395016., 385962., 389868., 393774., 397680.,
      388518., 392460., 396402., 400344., 391074., 395052., 399030., 403008.,
      393630., 397644., 401658., 405672., 401298., 405420., 409542., 413664.,
      403854., 408012., 412170., 416328., 406410., 410604., 414798., 418992.,
      408966., 413196., 417426., 421656., 411522., 415788., 420054., 424320.,
      414078., 418380., 422682., 426984., 416634., 420972., 425310., 429648.,
      424302., 428748., 433194., 437640., 426858., 431340., 435822., 440304.,
      429414., 433932., 438450., 442968., 431970., 436524., 441078., 445632.,
      434526., 439116., 443706., 448296., 437082., 441708., 446334., 450960.,
      439638., 444300., 448962., 453624., 447306., 452076., 456846., 461616.,
      449862., 454668., 459474., 464280., 452418., 457260., 462102., 466944.,
      454974., 459852., 464730., 469608., 457530., 462444., 467358., 472272.,
      460086., 465036., 469986., 474936., 462642., 467628., 472614., 477600.,
      470310., 475404., 480498., 485592., 472866., 477996., 483126., 488256.,
      475422., 480588., 485754., 490920., 477978., 483180., 488382., 493584.,
      480534., 485772., 491010., 496248., 483090., 488364., 493638., 498912.,
      485646., 490956., 496266., 501576., 493314., 498732., 504150., 509568.,
      495870., 501324., 506778., 512232., 498426., 503916., 509406., 514896.,
      500982., 506508., 512034., 517560., 503538., 509100., 514662., 520224.,
      506094., 511692., 517290., 522888., 508650., 514284., 519918., 525552.,
      516318., 522060., 527802., 533544., 518874., 524652., 530430., 536208.,
      521430., 527244., 533058., 538872., 523986., 529836., 535686., 541536.,
      526542., 532428., 538314., 544200., 529098., 535020., 540942., 546864.,
      531654., 537612., 543570., 549528.};
  const std::array<int, 4> in_shape = {{3, 10, 9, 1}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, SAME3x10x9x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5994303.,  6013266.,  6998082.,  7020132.,  8003100.,  8028216.,
      9009315.,  9037476.,  8012340.,  8037288.,  7014252.,  7036008.,
      6015093.,  6033678.,  6913488.,  6934512.,  8069628.,  8094072.,
      9226752.,  9254592.,  10384812., 10416024., 9233856.,  9261504.,
      8082060.,  8106168.,  6929472.,  6950064.,  7839639.,  7862562.,
      9148923.,  9175572.,  10458828., 10489176., 11769300., 11803320.,
      10462932., 10493064., 9156105.,  9182376.,  7848873.,  7871310.,
      8769840.,  8794500.,  10232565., 10261230., 11695440., 11728080.,
      13158405., 13194990., 11695680., 11728080., 10232985., 10261230.,
      8770380.,  8794500.,  7849845.,  7871310.,  9157428.,  9182376.,
      10464660., 10493064., 11771487., 11803320., 10460988., 10489176.,
      9151002.,  9175572.,  7841583.,  7862562.,  6931632.,  6950064.,
      8084748.,  8106168.,  9237120.,  9261504.,  10388700., 10416024.,
      9230400.,  9254592.,  8072988.,  8094072.,  6916512.,  6934512.,
      6018117.,  6033678.,  7017927.,  7036008.,  8016708.,  8037288.,
      9014418.,  9037476.,  8007804.,  8028216.,  7002345.,  7020132.,
      5998083.,  6013266.};
  const std::array<int, 4> in_shape = {{3, 10, 9, 2}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, VALID3x10x9x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      194178., 194844., 195510., 196176., 196842., 197508., 198174., 198840.,
      199506., 200172., 200838., 201504., 202170., 202836., 206166., 206832.,
      207498., 208164., 208830., 209496., 210162., 210828., 211494., 212160.,
      212826., 213492., 214158., 214824., 218154., 218820., 219486., 220152.,
      220818., 221484., 222150., 222816., 223482., 224148., 224814., 225480.,
      226146., 226812., 230142., 230808., 231474., 232140., 232806., 233472.,
      234138., 234804., 235470., 236136., 236802., 237468., 238134., 238800.,
      242130., 242796., 243462., 244128., 244794., 245460., 246126., 246792.,
      247458., 248124., 248790., 249456., 250122., 250788., 254118., 254784.,
      255450., 256116., 256782., 257448., 258114., 258780., 259446., 260112.,
      260778., 261444., 262110., 262776., 266106., 266772., 267438., 268104.,
      268770., 269436., 270102., 270768., 271434., 272100., 272766., 273432.,
      274098., 274764.};
  const std::array<int, 4> in_shape = {{3, 10, 9, 2}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, SAME3x10x9x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1808222., 1823614., 1823238., 1838756., 2146081., 2164100., 2163666.,
      2181832., 2535272., 2555960., 2555640., 2576496., 2925279., 2948678.,
      2948388., 2971976., 2624328., 2645096., 2644872., 2665808., 2324265.,
      2342360., 2342286., 2360528., 2037718., 2053354., 2053258., 2069020.,
      2358416., 2376352., 2376000., 2394080., 2793448., 2814456., 2814008.,
      2835184., 3284416., 3308544., 3308160., 3332480., 3776184., 3803480.,
      3803064., 3830576., 3387072., 3411328., 3410944., 3435392., 2998888.,
      3020056., 3019800., 3041136., 2619664., 2637952., 2637664., 2656096.,
      2936554., 2956846., 2956382., 2976836., 3468991., 3492598., 3492148.,
      3515944., 4062264., 4089240., 4088952., 4116144., 4656617., 4687016.,
      4686782., 4717424., 4174488., 4201384., 4201256., 4228368., 3693543.,
      3716882., 3716968., 3740496., 3217218., 3237202., 3237354., 3257500.,
      3538852., 3560800., 3560600., 3582728., 4180498., 4206058., 4205874.,
      4231644., 4887664., 4916896., 4916864., 4946336., 5595974., 5628938.,
      5628938., 5662172., 4887664., 4916864., 4916896., 4946336., 4180498.,
      4205874., 4206058., 4231644., 3538852., 3560600., 3560800., 3582728.,
      3217218., 3237354., 3237202., 3257500., 3693543., 3716968., 3716882.,
      3740496., 4174488., 4201256., 4201384., 4228368., 4656617., 4686782.,
      4687016., 4717424., 4062264., 4088952., 4089240., 4116144., 3468991.,
      3492148., 3492598., 3515944., 2936554., 2956382., 2956846., 2976836.,
      2619664., 2637664., 2637952., 2656096., 2998888., 3019800., 3020056.,
      3041136., 3387072., 3410944., 3411328., 3435392., 3776184., 3803064.,
      3803480., 3830576., 3284416., 3308160., 3308544., 3332480., 2793448.,
      2814008., 2814456., 2835184., 2358416., 2376000., 2376352., 2394080.,
      2037718., 2053258., 2053354., 2069020., 2324265., 2342286., 2342360.,
      2360528., 2624328., 2644872., 2645096., 2665808., 2925279., 2948388.,
      2948678., 2971976., 2535272., 2555640., 2555960., 2576496., 2146081.,
      2163666., 2164100., 2181832., 1808222., 1823238., 1823614., 1838756.};
  const std::array<int, 4> in_shape = {{3, 10, 9, 2}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 256.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, VALID3x10x9x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      380796., 388356., 382092., 389688., 383388., 391020., 384684., 392352.,
      385980., 393684., 387276., 395016., 388572., 396348., 389868., 397680.,
      391164., 399012., 392460., 400344., 393756., 401676., 395052., 403008.,
      396348., 404340., 397644., 405672., 404124., 412332., 405420., 413664.,
      406716., 414996., 408012., 416328., 409308., 417660., 410604., 418992.,
      411900., 420324., 413196., 421656., 414492., 422988., 415788., 424320.,
      417084., 425652., 418380., 426984., 419676., 428316., 420972., 429648.,
      427452., 436308., 428748., 437640., 430044., 438972., 431340., 440304.,
      432636., 441636., 433932., 442968., 435228., 444300., 436524., 445632.,
      437820., 446964., 439116., 448296., 440412., 449628., 441708., 450960.,
      443004., 452292., 444300., 453624., 450780., 460284., 452076., 461616.,
      453372., 462948., 454668., 464280., 455964., 465612., 457260., 466944.,
      458556., 468276., 459852., 469608., 461148., 470940., 462444., 472272.,
      463740., 473604., 465036., 474936., 466332., 476268., 467628., 477600.,
      474108., 484260., 475404., 485592., 476700., 486924., 477996., 488256.,
      479292., 489588., 480588., 490920., 481884., 492252., 483180., 493584.,
      484476., 494916., 485772., 496248., 487068., 497580., 488364., 498912.,
      489660., 500244., 490956., 501576., 497436., 508236., 498732., 509568.,
      500028., 510900., 501324., 512232., 502620., 513564., 503916., 514896.,
      505212., 516228., 506508., 517560., 507804., 518892., 509100., 520224.,
      510396., 521556., 511692., 522888., 512988., 524220., 514284., 525552.,
      520764., 532212., 522060., 533544., 523356., 534876., 524652., 536208.,
      525948., 537540., 527244., 538872., 528540., 540204., 529836., 541536.,
      531132., 542868., 532428., 544200., 533724., 545532., 535020., 546864.,
      536316., 548196., 537612., 549528.};
  const std::array<int, 4> in_shape = {{3, 10, 9, 2}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, SAME3x10x9x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1701788., 1717180., 1732572., 1747964., 1717614., 1733132., 1748650.,
      1764168., 2000095., 2018114., 2036133., 2054152., 2018478., 2036644.,
      2054810., 2072976., 2344960., 2365648., 2386336., 2407024., 2366072.,
      2386928., 2407784., 2428640., 2704471., 2727870., 2751269., 2774668.,
      2728484., 2752072., 2775660., 2799248., 2399344., 2420112., 2440880.,
      2461648., 2420552., 2441488., 2462424., 2483360., 2100643., 2118738.,
      2136833., 2154928., 2119130., 2137372., 2155614., 2173856., 1833368.,
      1849004., 1864640., 1880276., 1849218., 1864980., 1880742., 1896504.,
      2091536., 2109472., 2127408., 2145344., 2109408., 2127488., 2145568.,
      2163648., 2458304., 2479312., 2500320., 2521328., 2479032., 2500208.,
      2521384., 2542560., 2875200., 2899328., 2923456., 2947584., 2898944.,
      2923264., 2947584., 2971904., 3310288., 3337584., 3364880., 3392176.,
      3337208., 3364720., 3392232., 3419744., 2943936., 2968192., 2992448.,
      3016704., 2967680., 2992128., 3016576., 3041024., 2585120., 2606288.,
      2627456., 2648624., 2605784., 2627120., 2648456., 2669792., 2249648.,
      2267936., 2286224., 2304512., 2267328., 2285760., 2304192., 2322624.,
      2482064., 2502356., 2522648., 2542940., 2501334., 2521788., 2542242.,
      2562696., 2935623., 2959230., 2982837., 3006444., 2958196., 2981992.,
      3005788., 3029584., 3443984., 3470960., 3497936., 3524912., 3470008.,
      3497200., 3524392., 3551584., 3975187., 4005586., 4035985., 4066384.,
      4004810., 4035452., 4066094., 4096736., 3548704., 3575600., 3602496.,
      3629392., 3574888., 3602000., 3629112., 3656224., 3131299., 3154638.,
      3177977., 3201316., 3154152., 3177680., 3201208., 3224736., 2729588.,
      2749572., 2769556., 2789540., 2749218., 2769364., 2789510., 2809656.,
      3035276., 3057224., 3079172., 3101120., 3056832., 3078960., 3101088.,
      3123216., 3597644., 3623204., 3648764., 3674324., 3622842., 3648612.,
      3674382., 3700152., 4219056., 4248288., 4277520., 4306752., 4248032.,
      4277504., 4306976., 4336448., 4867528., 4900492., 4933456., 4966420.,
      4900418., 4933652., 4966886., 5000120., 4226256., 4255456., 4284656.,
      4313856., 4255296., 4284736., 4314176., 4343616., 3594500., 3619876.,
      3645252., 3670628., 3619810., 3645396., 3670982., 3696568., 3035220.,
      3056968., 3078716., 3100464., 3056920., 3078848., 3100776., 3122704.,
      2746588., 2766724., 2786860., 2806996., 2766170., 2786468., 2806766.,
      2827064., 3160141., 3183566., 3206991., 3230416., 3183078., 3206692.,
      3230306., 3253920., 3572384., 3599152., 3625920., 3652688., 3598824.,
      3625808., 3652792., 3679776., 4016893., 4047058., 4077223., 4107388.,
      4046984., 4077392., 4107800., 4138208., 3490352., 3517040., 3543728.,
      3570416., 3516952., 3543856., 3570760., 3597664., 2972681., 2995838.,
      3018995., 3042152., 2995898., 3019244., 3042590., 3065936., 2517600.,
      2537428., 2557256., 2577084., 2537542., 2557532., 2577522., 2597512.,
      2269136., 2287136., 2305136., 2323136., 2287136., 2305280., 2323424.,
      2341568., 2617376., 2638288., 2659200., 2680112., 2638296., 2659376.,
      2680456., 2701536., 2969408., 2993280., 3017152., 3041024., 2993408.,
      3017472., 3041536., 3065600., 3358832., 3385712., 3412592., 3439472.,
      3386072., 3413168., 3440264., 3467360., 2921664., 2945408., 2969152.,
      2992896., 2945664., 2969600., 2993536., 3017472., 2492288., 2512848.,
      2533408., 2553968., 2513144., 2533872., 2554600., 2575328., 2115184.,
      2132768., 2150352., 2167936., 2132992., 2150720., 2168448., 2186176.,
      1900280., 1915820., 1931360., 1946900., 1916066., 1931732., 1947398.,
      1963064., 2203885., 2221906., 2239927., 2257948., 2222264., 2240432.,
      2258600., 2276768., 2516816., 2537360., 2557904., 2578448., 2537960.,
      2558672., 2579384., 2600096., 2826361., 2849470., 2872579., 2895688.,
      2850186., 2873484., 2896782., 2920080., 2462272., 2482640., 2503008.,
      2523376., 2483256., 2503792., 2524328., 2544864., 2104977., 2122562.,
      2140147., 2157732., 2123204., 2140936., 2158668., 2176400., 1789716.,
      1804732., 1819748., 1834764., 1805270., 1820412., 1835554., 1850696.};
  const std::array<int, 4> in_shape = {{3, 10, 9, 2}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 256.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, VALID3x10x9x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      754032.,  761592.,  769152.,  776712.,  756588.,  764184.,  771780.,
      779376.,  759144.,  766776.,  774408.,  782040.,  761700.,  769368.,
      777036.,  784704.,  764256.,  771960.,  779664.,  787368.,  766812.,
      774552.,  782292.,  790032.,  769368.,  777144.,  784920.,  792696.,
      771924.,  779736.,  787548.,  795360.,  774480.,  782328.,  790176.,
      798024.,  777036.,  784920.,  792804.,  800688.,  779592.,  787512.,
      795432.,  803352.,  782148.,  790104.,  798060.,  806016.,  784704.,
      792696.,  800688.,  808680.,  787260.,  795288.,  803316.,  811344.,
      800040.,  808248.,  816456.,  824664.,  802596.,  810840.,  819084.,
      827328.,  805152.,  813432.,  821712.,  829992.,  807708.,  816024.,
      824340.,  832656.,  810264.,  818616.,  826968.,  835320.,  812820.,
      821208.,  829596.,  837984.,  815376.,  823800.,  832224.,  840648.,
      817932.,  826392.,  834852.,  843312.,  820488.,  828984.,  837480.,
      845976.,  823044.,  831576.,  840108.,  848640.,  825600.,  834168.,
      842736.,  851304.,  828156.,  836760.,  845364.,  853968.,  830712.,
      839352.,  847992.,  856632.,  833268.,  841944.,  850620.,  859296.,
      846048.,  854904.,  863760.,  872616.,  848604.,  857496.,  866388.,
      875280.,  851160.,  860088.,  869016.,  877944.,  853716.,  862680.,
      871644.,  880608.,  856272.,  865272.,  874272.,  883272.,  858828.,
      867864.,  876900.,  885936.,  861384.,  870456.,  879528.,  888600.,
      863940.,  873048.,  882156.,  891264.,  866496.,  875640.,  884784.,
      893928.,  869052.,  878232.,  887412.,  896592.,  871608.,  880824.,
      890040.,  899256.,  874164.,  883416.,  892668.,  901920.,  876720.,
      886008.,  895296.,  904584.,  879276.,  888600.,  897924.,  907248.,
      892056.,  901560.,  911064.,  920568.,  894612.,  904152.,  913692.,
      923232.,  897168.,  906744.,  916320.,  925896.,  899724.,  909336.,
      918948.,  928560.,  902280.,  911928.,  921576.,  931224.,  904836.,
      914520.,  924204.,  933888.,  907392.,  917112.,  926832.,  936552.,
      909948.,  919704.,  929460.,  939216.,  912504.,  922296.,  932088.,
      941880.,  915060.,  924888.,  934716.,  944544.,  917616.,  927480.,
      937344.,  947208.,  920172.,  930072.,  939972.,  949872.,  922728.,
      932664.,  942600.,  952536.,  925284.,  935256.,  945228.,  955200.,
      938064.,  948216.,  958368.,  968520.,  940620.,  950808.,  960996.,
      971184.,  943176.,  953400.,  963624.,  973848.,  945732.,  955992.,
      966252.,  976512.,  948288.,  958584.,  968880.,  979176.,  950844.,
      961176.,  971508.,  981840.,  953400.,  963768.,  974136.,  984504.,
      955956.,  966360.,  976764.,  987168.,  958512.,  968952.,  979392.,
      989832.,  961068.,  971544.,  982020.,  992496.,  963624.,  974136.,
      984648.,  995160.,  966180.,  976728.,  987276.,  997824.,  968736.,
      979320.,  989904.,  1000488., 971292.,  981912.,  992532.,  1003152.,
      984072.,  994872.,  1005672., 1016472., 986628.,  997464.,  1008300.,
      1019136., 989184.,  1000056., 1010928., 1021800., 991740.,  1002648.,
      1013556., 1024464., 994296.,  1005240., 1016184., 1027128., 996852.,
      1007832., 1018812., 1029792., 999408.,  1010424., 1021440., 1032456.,
      1001964., 1013016., 1024068., 1035120., 1004520., 1015608., 1026696.,
      1037784., 1007076., 1018200., 1029324., 1040448., 1009632., 1020792.,
      1031952., 1043112., 1012188., 1023384., 1034580., 1045776., 1014744.,
      1025976., 1037208., 1048440., 1017300., 1028568., 1039836., 1051104.,
      1030080., 1041528., 1052976., 1064424., 1032636., 1044120., 1055604.,
      1067088., 1035192., 1046712., 1058232., 1069752., 1037748., 1049304.,
      1060860., 1072416., 1040304., 1051896., 1063488., 1075080., 1042860.,
      1054488., 1066116., 1077744., 1045416., 1057080., 1068744., 1080408.,
      1047972., 1059672., 1071372., 1083072., 1050528., 1062264., 1074000.,
      1085736., 1053084., 1064856., 1076628., 1088400., 1055640., 1067448.,
      1079256., 1091064., 1058196., 1070040., 1081884., 1093728., 1060752.,
      1072632., 1084512., 1096392., 1063308., 1075224., 1087140., 1099056.};
  const std::array<int, 4> in_shape = {{3, 10, 9, 2}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, SAME3x10x9x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5406315., 5425278., 5444241., 5463204., 6306914., 6328964., 6351014.,
      6373064., 7215132., 7240248., 7265364., 7290480., 8130885., 8159046.,
      8187207., 8215368., 7194356., 7219304., 7244252., 7269200., 6250972.,
      6272728., 6294484., 6316240., 5379153., 5397738., 5416323., 5434908.,
      6142848., 6163872., 6184896., 6205920., 7169660., 7194104., 7218548.,
      7242992., 8204608., 8232448., 8260288., 8288128., 9247596., 9278808.,
      9310020., 9341232., 8192384., 8220032., 8247680., 8275328., 7129836.,
      7153944., 7178052., 7202160., 6133776., 6154368., 6174960., 6195552.,
      6672803., 6695726., 6718649., 6741572., 7699421., 7726070., 7752719.,
      7779368., 8734988., 8765336., 8795684., 8826032., 9779396., 9813416.,
      9847436., 9881456., 8595956., 8626088., 8656220., 8686352., 7404915.,
      7431186., 7457457., 7483728., 6275501., 6297938., 6320375., 6342812.,
      6729740., 6754400., 6779060., 6803720., 7772657., 7801322., 7829987.,
      7858652., 8825120., 8857760., 8890400., 8923040., 9887009., 9923594.,
      9960179., 9996764., 8699888., 8732288., 8764688., 8797088., 7504605.,
      7532850., 7561095., 7589340., 6365792., 6389912., 6414032., 6438152.,
      5908241., 5929706., 5951171., 5972636., 6813428., 6838376., 6863324.,
      6888272., 7726644., 7755048., 7783452., 7811856., 8647781., 8679614.,
      8711447., 8743280., 7598684., 7626872., 7655060., 7683248., 6542906.,
      6567476., 6592046., 6616616., 5540459., 5561438., 5582417., 5603396.,
      5062496., 5080928., 5099360., 5117792., 5826668., 5848088., 5869508.,
      5890928., 6597568., 6621952., 6646336., 6670720., 7375100., 7402424.,
      7429748., 7457072., 6468608., 6492800., 6516992., 6541184., 5556700.,
      5577784., 5598868., 5619952., 4694768., 4712768., 4730768., 4748768.,
      4198337., 4213898., 4229459., 4245020., 4819181., 4837262., 4855343.,
      4873424., 5445668., 5466248., 5486828., 5507408., 6077714., 6100772.,
      6123830., 6146888., 5317436., 5337848., 5358260., 5378672., 4552791.,
      4570578., 4588365., 4606152., 3834551., 3849734., 3864917., 3880100.};
  const std::array<int, 4> in_shape = {{3, 10, 9, 4}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 512.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, VALID3x10x9x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      387690., 388356., 389022., 389688., 390354., 391020., 391686., 392352.,
      393018., 393684., 394350., 395016., 395682., 396348., 397014., 397680.,
      398346., 399012., 399678., 400344., 401010., 401676., 402342., 403008.,
      403674., 404340., 405006., 405672., 411666., 412332., 412998., 413664.,
      414330., 414996., 415662., 416328., 416994., 417660., 418326., 418992.,
      419658., 420324., 420990., 421656., 422322., 422988., 423654., 424320.,
      424986., 425652., 426318., 426984., 427650., 428316., 428982., 429648.,
      435642., 436308., 436974., 437640., 438306., 438972., 439638., 440304.,
      440970., 441636., 442302., 442968., 443634., 444300., 444966., 445632.,
      446298., 446964., 447630., 448296., 448962., 449628., 450294., 450960.,
      451626., 452292., 452958., 453624., 459618., 460284., 460950., 461616.,
      462282., 462948., 463614., 464280., 464946., 465612., 466278., 466944.,
      467610., 468276., 468942., 469608., 470274., 470940., 471606., 472272.,
      472938., 473604., 474270., 474936., 475602., 476268., 476934., 477600.,
      483594., 484260., 484926., 485592., 486258., 486924., 487590., 488256.,
      488922., 489588., 490254., 490920., 491586., 492252., 492918., 493584.,
      494250., 494916., 495582., 496248., 496914., 497580., 498246., 498912.,
      499578., 500244., 500910., 501576., 507570., 508236., 508902., 509568.,
      510234., 510900., 511566., 512232., 512898., 513564., 514230., 514896.,
      515562., 516228., 516894., 517560., 518226., 518892., 519558., 520224.,
      520890., 521556., 522222., 522888., 523554., 524220., 524886., 525552.,
      531546., 532212., 532878., 533544., 534210., 534876., 535542., 536208.,
      536874., 537540., 538206., 538872., 539538., 540204., 540870., 541536.,
      542202., 542868., 543534., 544200., 544866., 545532., 546198., 546864.,
      547530., 548196., 548862., 549528.};
  const std::array<int, 4> in_shape = {{3, 10, 9, 4}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, SAME3x10x9x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1789716., 1805270., 1804732., 1820412., 1819748., 1835554., 1834764.,
      1850696., 2104977., 2123204., 2122562., 2140936., 2140147., 2158668.,
      2157732., 2176400., 2462272., 2483256., 2482640., 2503792., 2503008.,
      2524328., 2523376., 2544864., 2826361., 2850186., 2849470., 2873484.,
      2872579., 2896782., 2895688., 2920080., 2516816., 2537960., 2537360.,
      2558672., 2557904., 2579384., 2578448., 2600096., 2203885., 2222264.,
      2221906., 2240432., 2239927., 2258600., 2257948., 2276768., 1900280.,
      1916066., 1915820., 1931732., 1931360., 1947398., 1946900., 1963064.,
      2115184., 2132992., 2132768., 2150720., 2150352., 2168448., 2167936.,
      2186176., 2492288., 2513144., 2512848., 2533872., 2533408., 2554600.,
      2553968., 2575328., 2921664., 2945664., 2945408., 2969600., 2969152.,
      2993536., 2992896., 3017472., 3358832., 3386072., 3385712., 3413168.,
      3412592., 3440264., 3439472., 3467360., 2969408., 2993408., 2993280.,
      3017472., 3017152., 3041536., 3041024., 3065600., 2617376., 2638296.,
      2638288., 2659376., 2659200., 2680456., 2680112., 2701536., 2269136.,
      2287136., 2287136., 2305280., 2305136., 2323424., 2323136., 2341568.,
      2517600., 2537542., 2537428., 2557532., 2557256., 2577522., 2577084.,
      2597512., 2972681., 2995898., 2995838., 3019244., 3018995., 3042590.,
      3042152., 3065936., 3490352., 3516952., 3517040., 3543856., 3543728.,
      3570760., 3570416., 3597664., 4016893., 4046984., 4047058., 4077392.,
      4077223., 4107800., 4107388., 4138208., 3572384., 3598824., 3599152.,
      3625808., 3625920., 3652792., 3652688., 3679776., 3160141., 3183078.,
      3183566., 3206692., 3206991., 3230306., 3230416., 3253920., 2746588.,
      2766170., 2766724., 2786468., 2786860., 2806766., 2806996., 2827064.,
      3035220., 3056920., 3056968., 3078848., 3078716., 3100776., 3100464.,
      3122704., 3594500., 3619810., 3619876., 3645396., 3645252., 3670982.,
      3670628., 3696568., 4226256., 4255296., 4255456., 4284736., 4284656.,
      4314176., 4313856., 4343616., 4867528., 4900418., 4900492., 4933652.,
      4933456., 4966886., 4966420., 5000120., 4219056., 4248032., 4248288.,
      4277504., 4277520., 4306976., 4306752., 4336448., 3597644., 3622842.,
      3623204., 3648612., 3648764., 3674382., 3674324., 3700152., 3035276.,
      3056832., 3057224., 3078960., 3079172., 3101088., 3101120., 3123216.,
      2729588., 2749218., 2749572., 2769364., 2769556., 2789510., 2789540.,
      2809656., 3131299., 3154152., 3154638., 3177680., 3177977., 3201208.,
      3201316., 3224736., 3548704., 3574888., 3575600., 3602000., 3602496.,
      3629112., 3629392., 3656224., 3975187., 4004810., 4005586., 4035452.,
      4035985., 4066094., 4066384., 4096736., 3443984., 3470008., 3470960.,
      3497200., 3497936., 3524392., 3524912., 3551584., 2935623., 2958196.,
      2959230., 2981992., 2982837., 3005788., 3006444., 3029584., 2482064.,
      2501334., 2502356., 2521788., 2522648., 2542242., 2542940., 2562696.,
      2249648., 2267328., 2267936., 2285760., 2286224., 2304192., 2304512.,
      2322624., 2585120., 2605784., 2606288., 2627120., 2627456., 2648456.,
      2648624., 2669792., 2943936., 2967680., 2968192., 2992128., 2992448.,
      3016576., 3016704., 3041024., 3310288., 3337208., 3337584., 3364720.,
      3364880., 3392232., 3392176., 3419744., 2875200., 2898944., 2899328.,
      2923264., 2923456., 2947584., 2947584., 2971904., 2458304., 2479032.,
      2479312., 2500208., 2500320., 2521384., 2521328., 2542560., 2091536.,
      2109408., 2109472., 2127488., 2127408., 2145568., 2145344., 2163648.,
      1833368., 1849218., 1849004., 1864980., 1864640., 1880742., 1880276.,
      1896504., 2100643., 2119130., 2118738., 2137372., 2136833., 2155614.,
      2154928., 2173856., 2399344., 2420552., 2420112., 2441488., 2440880.,
      2462424., 2461648., 2483360., 2704471., 2728484., 2727870., 2752072.,
      2751269., 2775660., 2774668., 2799248., 2344960., 2366072., 2365648.,
      2386928., 2386336., 2407784., 2407024., 2428640., 2000095., 2018478.,
      2018114., 2036644., 2036133., 2054810., 2054152., 2072976., 1701788.,
      1717614., 1717180., 1733132., 1732572., 1748650., 1747964., 1764168.};
  const std::array<int, 4> in_shape = {{3, 10, 9, 4}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 256.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, VALID3x10x9x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      760296.,  775380.,  761592.,  776712.,  762888.,  778044.,  764184.,
      779376.,  765480.,  780708.,  766776.,  782040.,  768072.,  783372.,
      769368.,  784704.,  770664.,  786036.,  771960.,  787368.,  773256.,
      788700.,  774552.,  790032.,  775848.,  791364.,  777144.,  792696.,
      778440.,  794028.,  779736.,  795360.,  781032.,  796692.,  782328.,
      798024.,  783624.,  799356.,  784920.,  800688.,  786216.,  802020.,
      787512.,  803352.,  788808.,  804684.,  790104.,  806016.,  791400.,
      807348.,  792696.,  808680.,  793992.,  810012.,  795288.,  811344.,
      806952.,  823332.,  808248.,  824664.,  809544.,  825996.,  810840.,
      827328.,  812136.,  828660.,  813432.,  829992.,  814728.,  831324.,
      816024.,  832656.,  817320.,  833988.,  818616.,  835320.,  819912.,
      836652.,  821208.,  837984.,  822504.,  839316.,  823800.,  840648.,
      825096.,  841980.,  826392.,  843312.,  827688.,  844644.,  828984.,
      845976.,  830280.,  847308.,  831576.,  848640.,  832872.,  849972.,
      834168.,  851304.,  835464.,  852636.,  836760.,  853968.,  838056.,
      855300.,  839352.,  856632.,  840648.,  857964.,  841944.,  859296.,
      853608.,  871284.,  854904.,  872616.,  856200.,  873948.,  857496.,
      875280.,  858792.,  876612.,  860088.,  877944.,  861384.,  879276.,
      862680.,  880608.,  863976.,  881940.,  865272.,  883272.,  866568.,
      884604.,  867864.,  885936.,  869160.,  887268.,  870456.,  888600.,
      871752.,  889932.,  873048.,  891264.,  874344.,  892596.,  875640.,
      893928.,  876936.,  895260.,  878232.,  896592.,  879528.,  897924.,
      880824.,  899256.,  882120.,  900588.,  883416.,  901920.,  884712.,
      903252.,  886008.,  904584.,  887304.,  905916.,  888600.,  907248.,
      900264.,  919236.,  901560.,  920568.,  902856.,  921900.,  904152.,
      923232.,  905448.,  924564.,  906744.,  925896.,  908040.,  927228.,
      909336.,  928560.,  910632.,  929892.,  911928.,  931224.,  913224.,
      932556.,  914520.,  933888.,  915816.,  935220.,  917112.,  936552.,
      918408.,  937884.,  919704.,  939216.,  921000.,  940548.,  922296.,
      941880.,  923592.,  943212.,  924888.,  944544.,  926184.,  945876.,
      927480.,  947208.,  928776.,  948540.,  930072.,  949872.,  931368.,
      951204.,  932664.,  952536.,  933960.,  953868.,  935256.,  955200.,
      946920.,  967188.,  948216.,  968520.,  949512.,  969852.,  950808.,
      971184.,  952104.,  972516.,  953400.,  973848.,  954696.,  975180.,
      955992.,  976512.,  957288.,  977844.,  958584.,  979176.,  959880.,
      980508.,  961176.,  981840.,  962472.,  983172.,  963768.,  984504.,
      965064.,  985836.,  966360.,  987168.,  967656.,  988500.,  968952.,
      989832.,  970248.,  991164.,  971544.,  992496.,  972840.,  993828.,
      974136.,  995160.,  975432.,  996492.,  976728.,  997824.,  978024.,
      999156.,  979320.,  1000488., 980616.,  1001820., 981912.,  1003152.,
      993576.,  1015140., 994872.,  1016472., 996168.,  1017804., 997464.,
      1019136., 998760.,  1020468., 1000056., 1021800., 1001352., 1023132.,
      1002648., 1024464., 1003944., 1025796., 1005240., 1027128., 1006536.,
      1028460., 1007832., 1029792., 1009128., 1031124., 1010424., 1032456.,
      1011720., 1033788., 1013016., 1035120., 1014312., 1036452., 1015608.,
      1037784., 1016904., 1039116., 1018200., 1040448., 1019496., 1041780.,
      1020792., 1043112., 1022088., 1044444., 1023384., 1045776., 1024680.,
      1047108., 1025976., 1048440., 1027272., 1049772., 1028568., 1051104.,
      1040232., 1063092., 1041528., 1064424., 1042824., 1065756., 1044120.,
      1067088., 1045416., 1068420., 1046712., 1069752., 1048008., 1071084.,
      1049304., 1072416., 1050600., 1073748., 1051896., 1075080., 1053192.,
      1076412., 1054488., 1077744., 1055784., 1079076., 1057080., 1080408.,
      1058376., 1081740., 1059672., 1083072., 1060968., 1084404., 1062264.,
      1085736., 1063560., 1087068., 1064856., 1088400., 1066152., 1089732.,
      1067448., 1091064., 1068744., 1092396., 1070040., 1093728., 1071336.,
      1095060., 1072632., 1096392., 1073928., 1097724., 1075224., 1099056.};
  const std::array<int, 4> in_shape = {{3, 10, 9, 4}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, SAME3x10x9x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1614438., 1629992., 1645546., 1661100., 1630264., 1645944., 1661624.,
      1677304., 1646090., 1661896., 1677702., 1693508., 1661916., 1677848.,
      1693780., 1709712., 1888495., 1906722., 1924949., 1943176., 1906878.,
      1925252., 1943626., 1962000., 1925261., 1943782., 1962303., 1980824.,
      1943644., 1962312., 1980980., 1999648., 2200200., 2221184., 2242168.,
      2263152., 2221312., 2242464., 2263616., 2284768., 2242424., 2263744.,
      2285064., 2306384., 2263536., 2285024., 2306512., 2328000., 2551265.,
      2575090., 2598915., 2622740., 2575278., 2599292., 2623306., 2647320.,
      2599291., 2623494., 2647697., 2671900., 2623304., 2647696., 2672088.,
      2696480., 2258696., 2279840., 2300984., 2322128., 2279904., 2301216.,
      2322528., 2343840., 2301112., 2322592., 2344072., 2365552., 2322320.,
      2343968., 2365616., 2387264., 1968655., 1987034., 2005413., 2023792.,
      1987142., 2005668., 2024194., 2042720., 2005629., 2024302., 2042975.,
      2061648., 2024116., 2042936., 2061756., 2080576., 1706310., 1722096.,
      1737882., 1753668., 1722160., 1738072., 1753984., 1769896., 1738010.,
      1754048., 1770086., 1786124., 1753860., 1770024., 1786188., 1802352.,
      1964112., 1981920., 1999728., 2017536., 1981984., 1999936., 2017888.,
      2035840., 1999856., 2017952., 2036048., 2054144., 2017728., 2035968.,
      2054208., 2072448., 2307720., 2328576., 2349432., 2370288., 2328448.,
      2349472., 2370496., 2391520., 2349176., 2370368., 2391560., 2412752.,
      2369904., 2391264., 2412624., 2433984., 2698176., 2722176., 2746176.,
      2770176., 2721920., 2746112., 2770304., 2794496., 2745664., 2770048.,
      2794432., 2818816., 2769408., 2793984., 2818560., 2843136., 3137144.,
      3164384., 3191624., 3218864., 3164064., 3191520., 3218976., 3246432.,
      3190984., 3218656., 3246328., 3274000., 3217904., 3245792., 3273680.,
      3301568., 2783168., 2807168., 2831168., 2855168., 2806912., 2831104.,
      2855296., 2879488., 2830656., 2855040., 2879424., 2903808., 2854400.,
      2878976., 2903552., 2928128., 2449544., 2470464., 2491384., 2512304.,
      2470208., 2491296., 2512384., 2533472., 2490872., 2512128., 2533384.,
      2554640., 2511536., 2532960., 2554384., 2575808., 2134608., 2152608.,
      2170608., 2188608., 2152288., 2170432., 2188576., 2206720., 2169968.,
      2188256., 2206544., 2224832., 2187648., 2206080., 2224512., 2242944.,
      2422746., 2442688., 2462630., 2482572., 2442016., 2462120., 2482224.,
      2502328., 2461286., 2481552., 2501818., 2522084., 2480556., 2500984.,
      2521412., 2541840., 2903393., 2926610., 2949827., 2973044., 2925966.,
      2949372., 2972778., 2996184., 2948539., 2972134., 2995729., 3019324.,
      2971112., 2994896., 3018680., 3042464., 3441272., 3467872., 3494472.,
      3521072., 3467296., 3494112., 3520928., 3547744., 3493320., 3520352.,
      3547384., 3574416., 3519344., 3546592., 3573840., 3601088., 4037999.,
      4068090., 4098181., 4128272., 4067622., 4097956., 4128290., 4158624.,
      4097245., 4127822., 4158399., 4188976., 4126868., 4157688., 4188508.,
      4219328., 3628024., 3654464., 3680904., 3707344., 3654208., 3680864.,
      3707520., 3734176., 3680392., 3707264., 3734136., 3761008., 3706576.,
      3733664., 3760752., 3787840., 3230209., 3253146., 3276083., 3299020.,
      3253062., 3276188., 3299314., 3322440., 3275915., 3299230., 3322545.,
      3345860., 3298768., 3322272., 3345776., 3369280., 2842938., 2862520.,
      2882102., 2901684., 2862568., 2882312., 2902056., 2921800., 2882198.,
      2902104., 2922010., 2941916., 2901828., 2921896., 2941964., 2962032.,
      3337956., 3359656., 3381356., 3403056., 3359512., 3381392., 3403272.,
      3425152., 3381068., 3403128., 3425188., 3447248., 3402624., 3424864.,
      3447104., 3469344., 4004906., 4030216., 4055526., 4080836., 4030104.,
      4055624., 4081144., 4106664., 4055302., 4081032., 4106762., 4132492.,
      4080500., 4106440., 4132380., 4158320., 4738608., 4767648., 4796688.,
      4825728., 4767584., 4796864., 4826144., 4855424., 4796560., 4826080.,
      4855600., 4885120., 4825536., 4855296., 4885056., 4914816., 5540630.,
      5573520., 5606410., 5639300., 5573520., 5606680., 5639840., 5673000.,
      5606410., 5639840., 5673270., 5706700., 5639300., 5673000., 5706700.,
      5740400., 4738608., 4767584., 4796560., 4825536., 4767648., 4796864.,
      4826080., 4855296., 4796688., 4826144., 4855600., 4885056., 4825728.,
      4855424., 4885120., 4914816., 4004906., 4030104., 4055302., 4080500.,
      4030216., 4055624., 4081032., 4106440., 4055526., 4081144., 4106762.,
      4132380., 4080836., 4106664., 4132492., 4158320., 3337956., 3359512.,
      3381068., 3402624., 3359656., 3381392., 3403128., 3424864., 3381356.,
      3403272., 3425188., 3447104., 3403056., 3425152., 3447248., 3469344.,
      2842938., 2862568., 2882198., 2901828., 2862520., 2882312., 2902104.,
      2921896., 2882102., 2902056., 2922010., 2941964., 2901684., 2921800.,
      2941916., 2962032., 3230209., 3253062., 3275915., 3298768., 3253146.,
      3276188., 3299230., 3322272., 3276083., 3299314., 3322545., 3345776.,
      3299020., 3322440., 3345860., 3369280., 3628024., 3654208., 3680392.,
      3706576., 3654464., 3680864., 3707264., 3733664., 3680904., 3707520.,
      3734136., 3760752., 3707344., 3734176., 3761008., 3787840., 4037999.,
      4067622., 4097245., 4126868., 4068090., 4097956., 4127822., 4157688.,
      4098181., 4128290., 4158399., 4188508., 4128272., 4158624., 4188976.,
      4219328., 3441272., 3467296., 3493320., 3519344., 3467872., 3494112.,
      3520352., 3546592., 3494472., 3520928., 3547384., 3573840., 3521072.,
      3547744., 3574416., 3601088., 2903393., 2925966., 2948539., 2971112.,
      2926610., 2949372., 2972134., 2994896., 2949827., 2972778., 2995729.,
      3018680., 2973044., 2996184., 3019324., 3042464., 2422746., 2442016.,
      2461286., 2480556., 2442688., 2462120., 2481552., 2500984., 2462630.,
      2482224., 2501818., 2521412., 2482572., 2502328., 2522084., 2541840.,
      2134608., 2152288., 2169968., 2187648., 2152608., 2170432., 2188256.,
      2206080., 2170608., 2188576., 2206544., 2224512., 2188608., 2206720.,
      2224832., 2242944., 2449544., 2470208., 2490872., 2511536., 2470464.,
      2491296., 2512128., 2532960., 2491384., 2512384., 2533384., 2554384.,
      2512304., 2533472., 2554640., 2575808., 2783168., 2806912., 2830656.,
      2854400., 2807168., 2831104., 2855040., 2878976., 2831168., 2855296.,
      2879424., 2903552., 2855168., 2879488., 2903808., 2928128., 3137144.,
      3164064., 3190984., 3217904., 3164384., 3191520., 3218656., 3245792.,
      3191624., 3218976., 3246328., 3273680., 3218864., 3246432., 3274000.,
      3301568., 2698176., 2721920., 2745664., 2769408., 2722176., 2746112.,
      2770048., 2793984., 2746176., 2770304., 2794432., 2818560., 2770176.,
      2794496., 2818816., 2843136., 2307720., 2328448., 2349176., 2369904.,
      2328576., 2349472., 2370368., 2391264., 2349432., 2370496., 2391560.,
      2412624., 2370288., 2391520., 2412752., 2433984., 1964112., 1981984.,
      1999856., 2017728., 1981920., 1999936., 2017952., 2035968., 1999728.,
      2017888., 2036048., 2054208., 2017536., 2035840., 2054144., 2072448.,
      1706310., 1722160., 1738010., 1753860., 1722096., 1738072., 1754048.,
      1770024., 1737882., 1753984., 1770086., 1786188., 1753668., 1769896.,
      1786124., 1802352., 1968655., 1987142., 2005629., 2024116., 1987034.,
      2005668., 2024302., 2042936., 2005413., 2024194., 2042975., 2061756.,
      2023792., 2042720., 2061648., 2080576., 2258696., 2279904., 2301112.,
      2322320., 2279840., 2301216., 2322592., 2343968., 2300984., 2322528.,
      2344072., 2365616., 2322128., 2343840., 2365552., 2387264., 2551265.,
      2575278., 2599291., 2623304., 2575090., 2599292., 2623494., 2647696.,
      2598915., 2623306., 2647697., 2672088., 2622740., 2647320., 2671900.,
      2696480., 2200200., 2221312., 2242424., 2263536., 2221184., 2242464.,
      2263744., 2285024., 2242168., 2263616., 2285064., 2306512., 2263152.,
      2284768., 2306384., 2328000., 1888495., 1906878., 1925261., 1943644.,
      1906722., 1925252., 1943782., 1962312., 1924949., 1943626., 1962303.,
      1980980., 1943176., 1962000., 1980824., 1999648., 1614438., 1630264.,
      1646090., 1661916., 1629992., 1645944., 1661896., 1677848., 1645546.,
      1661624., 1677702., 1693780., 1661100., 1677304., 1693508., 1709712.};
  const std::array<int, 4> in_shape = {{3, 10, 9, 4}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 256.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, VALID3x10x9x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1505508., 1520592., 1535676., 1550760., 1508064., 1523184., 1538304.,
      1553424., 1510620., 1525776., 1540932., 1556088., 1513176., 1528368.,
      1543560., 1558752., 1515732., 1530960., 1546188., 1561416., 1518288.,
      1533552., 1548816., 1564080., 1520844., 1536144., 1551444., 1566744.,
      1523400., 1538736., 1554072., 1569408., 1525956., 1541328., 1556700.,
      1572072., 1528512., 1543920., 1559328., 1574736., 1531068., 1546512.,
      1561956., 1577400., 1533624., 1549104., 1564584., 1580064., 1536180.,
      1551696., 1567212., 1582728., 1538736., 1554288., 1569840., 1585392.,
      1541292., 1556880., 1572468., 1588056., 1543848., 1559472., 1575096.,
      1590720., 1546404., 1562064., 1577724., 1593384., 1548960., 1564656.,
      1580352., 1596048., 1551516., 1567248., 1582980., 1598712., 1554072.,
      1569840., 1585608., 1601376., 1556628., 1572432., 1588236., 1604040.,
      1559184., 1575024., 1590864., 1606704., 1561740., 1577616., 1593492.,
      1609368., 1564296., 1580208., 1596120., 1612032., 1566852., 1582800.,
      1598748., 1614696., 1569408., 1585392., 1601376., 1617360., 1571964.,
      1587984., 1604004., 1620024., 1574520., 1590576., 1606632., 1622688.,
      1597524., 1613904., 1630284., 1646664., 1600080., 1616496., 1632912.,
      1649328., 1602636., 1619088., 1635540., 1651992., 1605192., 1621680.,
      1638168., 1654656., 1607748., 1624272., 1640796., 1657320., 1610304.,
      1626864., 1643424., 1659984., 1612860., 1629456., 1646052., 1662648.,
      1615416., 1632048., 1648680., 1665312., 1617972., 1634640., 1651308.,
      1667976., 1620528., 1637232., 1653936., 1670640., 1623084., 1639824.,
      1656564., 1673304., 1625640., 1642416., 1659192., 1675968., 1628196.,
      1645008., 1661820., 1678632., 1630752., 1647600., 1664448., 1681296.,
      1633308., 1650192., 1667076., 1683960., 1635864., 1652784., 1669704.,
      1686624., 1638420., 1655376., 1672332., 1689288., 1640976., 1657968.,
      1674960., 1691952., 1643532., 1660560., 1677588., 1694616., 1646088.,
      1663152., 1680216., 1697280., 1648644., 1665744., 1682844., 1699944.,
      1651200., 1668336., 1685472., 1702608., 1653756., 1670928., 1688100.,
      1705272., 1656312., 1673520., 1690728., 1707936., 1658868., 1676112.,
      1693356., 1710600., 1661424., 1678704., 1695984., 1713264., 1663980.,
      1681296., 1698612., 1715928., 1666536., 1683888., 1701240., 1718592.,
      1689540., 1707216., 1724892., 1742568., 1692096., 1709808., 1727520.,
      1745232., 1694652., 1712400., 1730148., 1747896., 1697208., 1714992.,
      1732776., 1750560., 1699764., 1717584., 1735404., 1753224., 1702320.,
      1720176., 1738032., 1755888., 1704876., 1722768., 1740660., 1758552.,
      1707432., 1725360., 1743288., 1761216., 1709988., 1727952., 1745916.,
      1763880., 1712544., 1730544., 1748544., 1766544., 1715100., 1733136.,
      1751172., 1769208., 1717656., 1735728., 1753800., 1771872., 1720212.,
      1738320., 1756428., 1774536., 1722768., 1740912., 1759056., 1777200.,
      1725324., 1743504., 1761684., 1779864., 1727880., 1746096., 1764312.,
      1782528., 1730436., 1748688., 1766940., 1785192., 1732992., 1751280.,
      1769568., 1787856., 1735548., 1753872., 1772196., 1790520., 1738104.,
      1756464., 1774824., 1793184., 1740660., 1759056., 1777452., 1795848.,
      1743216., 1761648., 1780080., 1798512., 1745772., 1764240., 1782708.,
      1801176., 1748328., 1766832., 1785336., 1803840., 1750884., 1769424.,
      1787964., 1806504., 1753440., 1772016., 1790592., 1809168., 1755996.,
      1774608., 1793220., 1811832., 1758552., 1777200., 1795848., 1814496.,
      1781556., 1800528., 1819500., 1838472., 1784112., 1803120., 1822128.,
      1841136., 1786668., 1805712., 1824756., 1843800., 1789224., 1808304.,
      1827384., 1846464., 1791780., 1810896., 1830012., 1849128., 1794336.,
      1813488., 1832640., 1851792., 1796892., 1816080., 1835268., 1854456.,
      1799448., 1818672., 1837896., 1857120., 1802004., 1821264., 1840524.,
      1859784., 1804560., 1823856., 1843152., 1862448., 1807116., 1826448.,
      1845780., 1865112., 1809672., 1829040., 1848408., 1867776., 1812228.,
      1831632., 1851036., 1870440., 1814784., 1834224., 1853664., 1873104.,
      1817340., 1836816., 1856292., 1875768., 1819896., 1839408., 1858920.,
      1878432., 1822452., 1842000., 1861548., 1881096., 1825008., 1844592.,
      1864176., 1883760., 1827564., 1847184., 1866804., 1886424., 1830120.,
      1849776., 1869432., 1889088., 1832676., 1852368., 1872060., 1891752.,
      1835232., 1854960., 1874688., 1894416., 1837788., 1857552., 1877316.,
      1897080., 1840344., 1860144., 1879944., 1899744., 1842900., 1862736.,
      1882572., 1902408., 1845456., 1865328., 1885200., 1905072., 1848012.,
      1867920., 1887828., 1907736., 1850568., 1870512., 1890456., 1910400.,
      1873572., 1893840., 1914108., 1934376., 1876128., 1896432., 1916736.,
      1937040., 1878684., 1899024., 1919364., 1939704., 1881240., 1901616.,
      1921992., 1942368., 1883796., 1904208., 1924620., 1945032., 1886352.,
      1906800., 1927248., 1947696., 1888908., 1909392., 1929876., 1950360.,
      1891464., 1911984., 1932504., 1953024., 1894020., 1914576., 1935132.,
      1955688., 1896576., 1917168., 1937760., 1958352., 1899132., 1919760.,
      1940388., 1961016., 1901688., 1922352., 1943016., 1963680., 1904244.,
      1924944., 1945644., 1966344., 1906800., 1927536., 1948272., 1969008.,
      1909356., 1930128., 1950900., 1971672., 1911912., 1932720., 1953528.,
      1974336., 1914468., 1935312., 1956156., 1977000., 1917024., 1937904.,
      1958784., 1979664., 1919580., 1940496., 1961412., 1982328., 1922136.,
      1943088., 1964040., 1984992., 1924692., 1945680., 1966668., 1987656.,
      1927248., 1948272., 1969296., 1990320., 1929804., 1950864., 1971924.,
      1992984., 1932360., 1953456., 1974552., 1995648., 1934916., 1956048.,
      1977180., 1998312., 1937472., 1958640., 1979808., 2000976., 1940028.,
      1961232., 1982436., 2003640., 1942584., 1963824., 1985064., 2006304.,
      1965588., 1987152., 2008716., 2030280., 1968144., 1989744., 2011344.,
      2032944., 1970700., 1992336., 2013972., 2035608., 1973256., 1994928.,
      2016600., 2038272., 1975812., 1997520., 2019228., 2040936., 1978368.,
      2000112., 2021856., 2043600., 1980924., 2002704., 2024484., 2046264.,
      1983480., 2005296., 2027112., 2048928., 1986036., 2007888., 2029740.,
      2051592., 1988592., 2010480., 2032368., 2054256., 1991148., 2013072.,
      2034996., 2056920., 1993704., 2015664., 2037624., 2059584., 1996260.,
      2018256., 2040252., 2062248., 1998816., 2020848., 2042880., 2064912.,
      2001372., 2023440., 2045508., 2067576., 2003928., 2026032., 2048136.,
      2070240., 2006484., 2028624., 2050764., 2072904., 2009040., 2031216.,
      2053392., 2075568., 2011596., 2033808., 2056020., 2078232., 2014152.,
      2036400., 2058648., 2080896., 2016708., 2038992., 2061276., 2083560.,
      2019264., 2041584., 2063904., 2086224., 2021820., 2044176., 2066532.,
      2088888., 2024376., 2046768., 2069160., 2091552., 2026932., 2049360.,
      2071788., 2094216., 2029488., 2051952., 2074416., 2096880., 2032044.,
      2054544., 2077044., 2099544., 2034600., 2057136., 2079672., 2102208.,
      2057604., 2080464., 2103324., 2126184., 2060160., 2083056., 2105952.,
      2128848., 2062716., 2085648., 2108580., 2131512., 2065272., 2088240.,
      2111208., 2134176., 2067828., 2090832., 2113836., 2136840., 2070384.,
      2093424., 2116464., 2139504., 2072940., 2096016., 2119092., 2142168.,
      2075496., 2098608., 2121720., 2144832., 2078052., 2101200., 2124348.,
      2147496., 2080608., 2103792., 2126976., 2150160., 2083164., 2106384.,
      2129604., 2152824., 2085720., 2108976., 2132232., 2155488., 2088276.,
      2111568., 2134860., 2158152., 2090832., 2114160., 2137488., 2160816.,
      2093388., 2116752., 2140116., 2163480., 2095944., 2119344., 2142744.,
      2166144., 2098500., 2121936., 2145372., 2168808., 2101056., 2124528.,
      2148000., 2171472., 2103612., 2127120., 2150628., 2174136., 2106168.,
      2129712., 2153256., 2176800., 2108724., 2132304., 2155884., 2179464.,
      2111280., 2134896., 2158512., 2182128., 2113836., 2137488., 2161140.,
      2184792., 2116392., 2140080., 2163768., 2187456., 2118948., 2142672.,
      2166396., 2190120., 2121504., 2145264., 2169024., 2192784., 2124060.,
      2147856., 2171652., 2195448., 2126616., 2150448., 2174280., 2198112.};
  const std::array<int, 4> in_shape = {{3, 10, 9, 4}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, SAME3x10x10x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      4328954., 4950316., 5572350., 6195035., 5578020., 4960396., 4342184.,
      4991896., 5707424., 6423480., 7140040., 6427800., 5715104., 5001976.,
      5659668., 6469812., 7280280., 8091045., 7282710., 6474132., 5665338.,
      6330170., 7235080., 8140050., 9045050., 8140050., 7235080., 6330170.,
      5665338., 6474132., 7282710., 8091045., 7280280., 6469812., 5659668.,
      5001976., 5715104., 6427800., 7140040., 6423480., 5707424., 4991896.,
      4342184., 4960396., 5578020., 6195035., 5572350., 4950316., 4328954.};
  const std::array<int, 4> in_shape = {{3, 10, 10, 1}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, VALID3x10x10x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      191840., 193016., 194192., 195368., 196544., 197720., 198896.,
      203600., 204776., 205952., 207128., 208304., 209480., 210656.,
      215360., 216536., 217712., 218888., 220064., 221240., 222416.,
      227120., 228296., 229472., 230648., 231824., 233000., 234176.,
      238880., 240056., 241232., 242408., 243584., 244760., 245936.,
      250640., 251816., 252992., 254168., 255344., 256520., 257696.,
      262400., 263576., 264752., 265928., 267104., 268280., 269456.};
  const std::array<int, 4> in_shape = {{3, 10, 10, 1}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, SAME3x10x10x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      4606722.,  4626420.,  5326356.,  5348952.,  6045265.,  6070780.,
      6763407.,  6791862.,  6152160.,  6177864.,  5542276.,  5565208.,
      4933797.,  4953936.,  5765112.,  5788464.,  6652064.,  6678848.,
      7538000.,  7568240.,  8422872.,  8456592.,  7647288.,  7677744.,
      6873376.,  6900544.,  6101184.,  6125040.,  6932952.,  6960168.,
      7988092.,  8019304.,  9041805.,  9077040.,  10094037., 10133322.,
      9152406.,  9187884.,  8212876.,  8244520.,  7275501.,  7303284.,
      8106042.,  8137332.,  9329640.,  9365520.,  10551280., 10591780.,
      11770902., 11816052., 10662114., 10702884., 9555976.,  9592336.,
      8452548.,  8484468.,  7704258.,  7733364.,  8873164.,  8906536.,
      10040075., 10077740., 11204937., 11246922., 10155804., 10193712.,
      9109340.,  9143144.,  8065599.,  8095272.,  7341464.,  7368176.,
      8461728.,  8492352.,  9580080.,  9614640.,  10696472., 10734992.,
      9701784.,  9736560.,  8709664.,  8740672.,  7720160.,  7747376.,
      7021860.,  7045968.,  8100132.,  8127768.,  9176695.,  9207880.,
      10251507., 10286262., 9305454.,  9336828.,  8361748.,  8389720.,
      7420431.,  7444980.};
  const std::array<int, 4> in_shape = {{3, 10, 10, 1}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 512.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, VALID3x10x10x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      378040., 383680., 380344., 386032., 382648., 388384., 384952., 390736.,
      387256., 393088., 389560., 395440., 391864., 397792., 401080., 407200.,
      403384., 409552., 405688., 411904., 407992., 414256., 410296., 416608.,
      412600., 418960., 414904., 421312., 424120., 430720., 426424., 433072.,
      428728., 435424., 431032., 437776., 433336., 440128., 435640., 442480.,
      437944., 444832., 447160., 454240., 449464., 456592., 451768., 458944.,
      454072., 461296., 456376., 463648., 458680., 466000., 460984., 468352.,
      470200., 477760., 472504., 480112., 474808., 482464., 477112., 484816.,
      479416., 487168., 481720., 489520., 484024., 491872., 493240., 501280.,
      495544., 503632., 497848., 505984., 500152., 508336., 502456., 510688.,
      504760., 513040., 507064., 515392., 516280., 524800., 518584., 527152.,
      520888., 529504., 523192., 531856., 525496., 534208., 527800., 536560.,
      530104., 538912.};
  const std::array<int, 4> in_shape = {{3, 10, 10, 1}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, SAME3x10x10x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      3992850.,  4012548.,  4032246., 4051944., 4601828., 4624424.,  4647020.,
      4669616.,  5204215.,  5229730., 5255245., 5280760., 5799927.,  5828382.,
      5856837.,  5885292.,  5257560., 5283264., 5308968., 5334672.,  4722548.,
      4745480.,  4768412.,  4791344., 4194975., 4215114., 4235253.,  4255392.,
      5127864.,  5151216.,  5174568., 5197920., 5912224., 5939008.,  5965792.,
      5992576.,  6688896.,  6719136., 6749376., 6779616., 7457784.,  7491504.,
      7525224.,  7558944.,  6792056., 6822512., 6852968., 6883424.,  6135328.,
      6162496.,  6189664.,  6216832., 5430864., 5454720., 5478576.,  5502432.,
      6344544.,  6371760.,  6398976., 6426192., 7301900., 7333112.,  7364324.,
      7395536.,  8250231.,  8285466., 8320701., 8355936., 9189429.,  9228714.,
      9267999.,  9307284.,  8351382., 8386860., 8422338., 8457816.,  7523708.,
      7555352.,  7586996.,  7618640., 6644563., 6672346., 6700129.,  6727912.,
      7535674.,  7566964.,  7598254., 7629544., 8661416., 8697296.,  8733176.,
      8769056.,  9776556.,  9817056., 9857556., 9898056., 10880974., 10926124.,
      10971274., 11016424., 9873538., 9914308., 9955078., 9995848.,  8878088.,
      8914448.,  8950808.,  8987168., 7827672., 7859592., 7891512.,  7923432.,
      7009746.,  7038852.,  7067958., 7097064., 8066364., 8099736.,  8133108.,
      8166480.,  9112821.,  9150486., 9188151., 9225816., 10149009., 10190994.,
      10232979., 10274964., 9224228., 9262136., 9300044., 9337952.,  8310956.,
      8344760.,  8378564.,  8412368., 7337109., 7366782., 7396455.,  7426128.,
      6597848.,  6624560.,  6651272., 6677984., 7602592., 7633216.,  7663840.,
      7694464.,  8597856.,  8632416., 8666976., 8701536., 9583544.,  9622064.,
      9660584.,  9699104.,  8725848., 8760624., 8795400., 8830176.,  7878944.,
      7909952.,  7940960.,  7971968., 6965616., 6992832., 7020048.,  7047264.,
      6308380.,  6332488.,  6356596., 6380704., 7279700., 7307336.,  7334972.,
      7362608.,  8242461.,  8273646., 8304831., 8336016., 9196579.,  9231334.,
      9266089.,  9300844.,  8389198., 8420572., 8451946., 8483320.,  7591652.,
      7619624.,  7647596.,  7675568., 6721593., 6746142., 6770691.,  6795240.};
  const std::array<int, 4> in_shape = {{3, 10, 10, 1}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 512.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, VALID3x10x10x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      750440.,  756080.,  761720.,  767360.,  755000.,  760688.,  766376.,
      772064.,  759560.,  765296.,  771032.,  776768.,  764120.,  769904.,
      775688.,  781472.,  768680.,  774512.,  780344.,  786176.,  773240.,
      779120.,  785000.,  790880.,  777800.,  783728.,  789656.,  795584.,
      796040.,  802160.,  808280.,  814400.,  800600.,  806768.,  812936.,
      819104.,  805160.,  811376.,  817592.,  823808.,  809720.,  815984.,
      822248.,  828512.,  814280.,  820592.,  826904.,  833216.,  818840.,
      825200.,  831560.,  837920.,  823400.,  829808.,  836216.,  842624.,
      841640.,  848240.,  854840.,  861440.,  846200.,  852848.,  859496.,
      866144.,  850760.,  857456.,  864152.,  870848.,  855320.,  862064.,
      868808.,  875552.,  859880.,  866672.,  873464.,  880256.,  864440.,
      871280.,  878120.,  884960.,  869000.,  875888.,  882776.,  889664.,
      887240.,  894320.,  901400.,  908480.,  891800.,  898928.,  906056.,
      913184.,  896360.,  903536.,  910712.,  917888.,  900920.,  908144.,
      915368.,  922592.,  905480.,  912752.,  920024.,  927296.,  910040.,
      917360.,  924680.,  932000.,  914600.,  921968.,  929336.,  936704.,
      932840.,  940400.,  947960.,  955520.,  937400.,  945008.,  952616.,
      960224.,  941960.,  949616.,  957272.,  964928.,  946520.,  954224.,
      961928.,  969632.,  951080.,  958832.,  966584.,  974336.,  955640.,
      963440.,  971240.,  979040.,  960200.,  968048.,  975896.,  983744.,
      978440.,  986480.,  994520.,  1002560., 983000.,  991088.,  999176.,
      1007264., 987560.,  995696.,  1003832., 1011968., 992120.,  1000304.,
      1008488., 1016672., 996680.,  1004912., 1013144., 1021376., 1001240.,
      1009520., 1017800., 1026080., 1005800., 1014128., 1022456., 1030784.,
      1024040., 1032560., 1041080., 1049600., 1028600., 1037168., 1045736.,
      1054304., 1033160., 1041776., 1050392., 1059008., 1037720., 1046384.,
      1055048., 1063712., 1042280., 1050992., 1059704., 1068416., 1046840.,
      1055600., 1064360., 1073120., 1051400., 1060208., 1069016., 1077824.};
  const std::array<int, 4> in_shape = {{3, 10, 10, 1}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, SAME3x10x10x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      7420431.,  7444980.,  8361748.,  8389720.,  9305454.,  9336828.,
      10251507., 10286262., 9176695.,  9207880.,  8100132.,  8127768.,
      7021860.,  7045968.,  7720160.,  7747376.,  8709664.,  8740672.,
      9701784.,  9736560.,  10696472., 10734992., 9580080.,  9614640.,
      8461728.,  8492352.,  7341464.,  7368176.,  8065599.,  8095272.,
      9109340.,  9143144.,  10155804., 10193712., 11204937., 11246922.,
      10040075., 10077740., 8873164.,  8906536.,  7704258.,  7733364.,
      8452548.,  8484468.,  9555976.,  9592336.,  10662114., 10702884.,
      11770902., 11816052., 10551280., 10591780., 9329640.,  9365520.,
      8106042.,  8137332.,  7275501.,  7303284.,  8212876.,  8244520.,
      9152406.,  9187884.,  10094037., 10133322., 9041805.,  9077040.,
      7988092.,  8019304.,  6932952.,  6960168.,  6101184.,  6125040.,
      6873376.,  6900544.,  7647288.,  7677744.,  8422872.,  8456592.,
      7538000.,  7568240.,  6652064.,  6678848.,  5765112.,  5788464.,
      4933797.,  4953936.,  5542276.,  5565208.,  6152160.,  6177864.,
      6763407.,  6791862.,  6045265.,  6070780.,  5326356.,  5348952.,
      4606722.,  4626420.};
  const std::array<int, 4> in_shape = {{3, 10, 10, 2}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 512.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, VALID3x10x10x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      382504., 383680., 384856., 386032., 387208., 388384., 389560., 390736.,
      391912., 393088., 394264., 395440., 396616., 397792., 406024., 407200.,
      408376., 409552., 410728., 411904., 413080., 414256., 415432., 416608.,
      417784., 418960., 420136., 421312., 429544., 430720., 431896., 433072.,
      434248., 435424., 436600., 437776., 438952., 440128., 441304., 442480.,
      443656., 444832., 453064., 454240., 455416., 456592., 457768., 458944.,
      460120., 461296., 462472., 463648., 464824., 466000., 467176., 468352.,
      476584., 477760., 478936., 480112., 481288., 482464., 483640., 484816.,
      485992., 487168., 488344., 489520., 490696., 491872., 500104., 501280.,
      502456., 503632., 504808., 505984., 507160., 508336., 509512., 510688.,
      511864., 513040., 514216., 515392., 523624., 524800., 525976., 527152.,
      528328., 529504., 530680., 531856., 533032., 534208., 535384., 536560.,
      537736., 538912.};
  const std::array<int, 4> in_shape = {{3, 10, 10, 2}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, SAME3x10x10x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1690061., 1707550., 1705732., 1723368., 1943112., 1963048., 1961000.,
      1981104., 2180163., 2202332., 2200226., 2222584., 2417770., 2442214.,
      2439966., 2464620., 2195419., 2217454., 2215360., 2237584., 1974216.,
      1993800., 1991944., 2011696., 1754245., 1771336., 1769802., 1787040.,
      2266360., 2285760., 2285040., 2304608., 2625472., 2647616., 2646848.,
      2669184., 2974152., 2998832., 2998176., 3023072., 3323824., 3351088.,
      3350448., 3377952., 3063112., 3087712., 3087216., 3112032., 2803648.,
      2825536., 2825280., 2847360., 2488952., 2508080., 2507904., 2527200.,
      3031963., 3053694., 3053744., 3075664., 3510200., 3535032., 3535096.,
      3560144., 3983333., 4011064., 4011290., 4039264., 4457654., 4488338.,
      4488618., 4519572., 4094429., 4122134., 4122412., 4150360., 3732280.,
      3756952., 3757336., 3782224., 3309619., 3331204., 3331546., 3353320.,
      3880166., 3904648., 3904628., 3929320., 4488368., 4516368., 4516304.,
      4544544., 5096554., 5127876., 5127904., 5159496., 5705884., 5740588.,
      5740588., 5775592., 5096554., 5127904., 5127876., 5159496., 4488368.,
      4516304., 4516368., 4544544., 3880166., 3904628., 3904648., 3929320.,
      3309619., 3331546., 3331204., 3353320., 3732280., 3757336., 3756952.,
      3782224., 4094429., 4122412., 4122134., 4150360., 4457654., 4488618.,
      4488338., 4519572., 3983333., 4011290., 4011064., 4039264., 3510200.,
      3535096., 3535032., 3560144., 3031963., 3053744., 3053694., 3075664.,
      2488952., 2507904., 2508080., 2527200., 2803648., 2825280., 2825536.,
      2847360., 3063112., 3087216., 3087712., 3112032., 3323824., 3350448.,
      3351088., 3377952., 2974152., 2998176., 2998832., 3023072., 2625472.,
      2646848., 2647616., 2669184., 2266360., 2285040., 2285760., 2304608.,
      1754245., 1769802., 1771336., 1787040., 1974216., 1991944., 1993800.,
      2011696., 2195419., 2215360., 2217454., 2237584., 2417770., 2439966.,
      2442214., 2464620., 2180163., 2200226., 2202332., 2222584., 1943112.,
      1961000., 1963048., 1981104., 1690061., 1705732., 1707550., 1723368.};
  const std::array<int, 4> in_shape = {{3, 10, 10, 2}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 256.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, VALID3x10x10x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      753776.,  765008.,  756080.,  767360.,  758384.,  769712.,  760688.,
      772064.,  762992.,  774416.,  765296.,  776768.,  767600.,  779120.,
      769904.,  781472.,  772208.,  783824.,  774512.,  786176.,  776816.,
      788528.,  779120.,  790880.,  781424.,  793232.,  783728.,  795584.,
      799856.,  812048.,  802160.,  814400.,  804464.,  816752.,  806768.,
      819104.,  809072.,  821456.,  811376.,  823808.,  813680.,  826160.,
      815984.,  828512.,  818288.,  830864.,  820592.,  833216.,  822896.,
      835568.,  825200.,  837920.,  827504.,  840272.,  829808.,  842624.,
      845936.,  859088.,  848240.,  861440.,  850544.,  863792.,  852848.,
      866144.,  855152.,  868496.,  857456.,  870848.,  859760.,  873200.,
      862064.,  875552.,  864368.,  877904.,  866672.,  880256.,  868976.,
      882608.,  871280.,  884960.,  873584.,  887312.,  875888.,  889664.,
      892016.,  906128.,  894320.,  908480.,  896624.,  910832.,  898928.,
      913184.,  901232.,  915536.,  903536.,  917888.,  905840.,  920240.,
      908144.,  922592.,  910448.,  924944.,  912752.,  927296.,  915056.,
      929648.,  917360.,  932000.,  919664.,  934352.,  921968.,  936704.,
      938096.,  953168.,  940400.,  955520.,  942704.,  957872.,  945008.,
      960224.,  947312.,  962576.,  949616.,  964928.,  951920.,  967280.,
      954224.,  969632.,  956528.,  971984.,  958832.,  974336.,  961136.,
      976688.,  963440.,  979040.,  965744.,  981392.,  968048.,  983744.,
      984176.,  1000208., 986480.,  1002560., 988784.,  1004912., 991088.,
      1007264., 993392.,  1009616., 995696.,  1011968., 998000.,  1014320.,
      1000304., 1016672., 1002608., 1019024., 1004912., 1021376., 1007216.,
      1023728., 1009520., 1026080., 1011824., 1028432., 1014128., 1030784.,
      1030256., 1047248., 1032560., 1049600., 1034864., 1051952., 1037168.,
      1054304., 1039472., 1056656., 1041776., 1059008., 1044080., 1061360.,
      1046384., 1063712., 1048688., 1066064., 1050992., 1068416., 1053296.,
      1070768., 1055600., 1073120., 1057904., 1075472., 1060208., 1077824.};
  const std::array<int, 4> in_shape = {{3, 10, 10, 2}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, SAME3x10x10x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1835081., 1852570., 1870059., 1887548., 1853220., 1870856., 1888492.,
      1906128., 2091696., 2111632., 2131568., 2151504., 2112456., 2132560.,
      2152664., 2172768., 2329581., 2351750., 2373919., 2396088., 2353134.,
      2375492., 2397850., 2420208., 2565464., 2589908., 2614352., 2638796.,
      2591726., 2616380., 2641034., 2665688., 2312355., 2334390., 2356425.,
      2378460., 2335920., 2358144., 2380368., 2402592., 2065168., 2084752.,
      2104336., 2123920., 2086120., 2105872., 2125624., 2145376., 1824071.,
      1841162., 1858253., 1875344., 1842494., 1859732., 1876970., 1894208.,
      2191656., 2211056., 2230456., 2249856., 2212720., 2232288., 2251856.,
      2271424., 2529536., 2551680., 2573824., 2595968., 2553664., 2576000.,
      2598336., 2620672., 2863912., 2888592., 2913272., 2937952., 2891264.,
      2916160., 2941056., 2965952., 3196128., 3223392., 3250656., 3277920.,
      3226608., 3254112., 3281616., 3309120., 2935416., 2960016., 2984616.,
      3009216., 2962928., 2987744., 3012560., 3037376., 2681344., 2703232.,
      2725120., 2747008., 2705984., 2728064., 2750144., 2772224., 2377528.,
      2396656., 2415784., 2434912., 2399136., 2418432., 2437728., 2457024.,
      2756435., 2778166., 2799897., 2821628., 2780096., 2802016., 2823936.,
      2845856., 3190384., 3215216., 3240048., 3264880., 3217432., 3242480.,
      3267528., 3292576., 3635575., 3663306., 3691037., 3718768., 3666158.,
      3694132., 3722106., 3750080., 4077968., 4108652., 4139336., 4170020.,
      4111978., 4142932., 4173886., 4204840., 3742081., 3769786., 3797491.,
      3825196., 3772716., 3800664., 3828612., 3856560., 3413520., 3438192.,
      3462864., 3487536., 3440888., 3465776., 3490664., 3515552., 3030805.,
      3052390., 3073975., 3095560., 3054758., 3076532., 3098306., 3120080.,
      3414314., 3438796., 3463278., 3487760., 3439732., 3464424., 3489116.,
      3513808., 3955712., 3983712., 4011712., 4039712., 3984720., 4012960.,
      4041200., 4069440., 4522618., 4553940., 4585262., 4616584., 4555352.,
      4586944., 4618536., 4650128., 5085608., 5120312., 5155016., 5189720.,
      5121948., 5156952., 5191956., 5226960., 4528734., 4560084., 4591434.,
      4622784., 4561412., 4593032., 4624652., 4656272., 3980352., 4008288.,
      4036224., 4064160., 4009488., 4037664., 4065840., 4094016., 3439422.,
      3463884., 3488346., 3512808., 3464880., 3489552., 3514224., 3538896.,
      3041215., 3063142., 3085069., 3106996., 3064484., 3086600., 3108716.,
      3130832., 3437712., 3462768., 3487824., 3512880., 3464312., 3489584.,
      3514856., 3540128., 3773291., 3801274., 3829257., 3857240., 3803114.,
      3831340., 3859566., 3887792., 4105336., 4136300., 4167264., 4198228.,
      4138274., 4169508., 4200742., 4231976., 3658901., 3686858., 3714815.,
      3742772., 3688520., 3716720., 3744920., 3773120., 3220016., 3244912.,
      3269808., 3294704., 3246424., 3271536., 3296648., 3321760., 2782497.,
      2804278., 2826059., 2847840., 2805546., 2827516., 2849486., 2871456.,
      2297064., 2316016., 2334968., 2353920., 2317232., 2336352., 2355472.,
      2374592., 2607872., 2629504., 2651136., 2672768., 2630976., 2652800.,
      2674624., 2696448., 2868840., 2892944., 2917048., 2941152., 2894784.,
      2919104., 2943424., 2967744., 3127136., 3153760., 3180384., 3207008.,
      3155824., 3182688., 3209552., 3236416., 2798264., 2822288., 2846312.,
      2870336., 2824112., 2848352., 2872592., 2896832., 2476032., 2497408.,
      2518784., 2540160., 2499136., 2520704., 2542272., 2563840., 2149112.,
      2167792., 2186472., 2205152., 2169312., 2188160., 2207008., 2225856.,
      1761093., 1776650., 1792207., 1807764., 1779000., 1794704., 1810408.,
      1826112., 2017872., 2035600., 2053328., 2071056., 2038440., 2056336.,
      2074232., 2092128., 2272465., 2292406., 2312347., 2332288., 2295610.,
      2315740., 2335870., 2356000., 2524704., 2546900., 2569096., 2591292.,
      2550342., 2572748., 2595154., 2617560., 2283047., 2303110., 2323173.,
      2343236., 2306204., 2326456., 2346708., 2366960., 2046640., 2064528.,
      2082416., 2100304., 2067400., 2085456., 2103512., 2121568., 1799011.,
      1814682., 1830353., 1846024., 1817202., 1833020., 1848838., 1864656.};
  const std::array<int, 4> in_shape = {{3, 10, 10, 2}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 256.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, VALID3x10x10x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1496320., 1507552., 1518784., 1530016., 1500880., 1512160., 1523440.,
      1534720., 1505440., 1516768., 1528096., 1539424., 1510000., 1521376.,
      1532752., 1544128., 1514560., 1525984., 1537408., 1548832., 1519120.,
      1530592., 1542064., 1553536., 1523680., 1535200., 1546720., 1558240.,
      1528240., 1539808., 1551376., 1562944., 1532800., 1544416., 1556032.,
      1567648., 1537360., 1549024., 1560688., 1572352., 1541920., 1553632.,
      1565344., 1577056., 1546480., 1558240., 1570000., 1581760., 1551040.,
      1562848., 1574656., 1586464., 1555600., 1567456., 1579312., 1591168.,
      1587520., 1599712., 1611904., 1624096., 1592080., 1604320., 1616560.,
      1628800., 1596640., 1608928., 1621216., 1633504., 1601200., 1613536.,
      1625872., 1638208., 1605760., 1618144., 1630528., 1642912., 1610320.,
      1622752., 1635184., 1647616., 1614880., 1627360., 1639840., 1652320.,
      1619440., 1631968., 1644496., 1657024., 1624000., 1636576., 1649152.,
      1661728., 1628560., 1641184., 1653808., 1666432., 1633120., 1645792.,
      1658464., 1671136., 1637680., 1650400., 1663120., 1675840., 1642240.,
      1655008., 1667776., 1680544., 1646800., 1659616., 1672432., 1685248.,
      1678720., 1691872., 1705024., 1718176., 1683280., 1696480., 1709680.,
      1722880., 1687840., 1701088., 1714336., 1727584., 1692400., 1705696.,
      1718992., 1732288., 1696960., 1710304., 1723648., 1736992., 1701520.,
      1714912., 1728304., 1741696., 1706080., 1719520., 1732960., 1746400.,
      1710640., 1724128., 1737616., 1751104., 1715200., 1728736., 1742272.,
      1755808., 1719760., 1733344., 1746928., 1760512., 1724320., 1737952.,
      1751584., 1765216., 1728880., 1742560., 1756240., 1769920., 1733440.,
      1747168., 1760896., 1774624., 1738000., 1751776., 1765552., 1779328.,
      1769920., 1784032., 1798144., 1812256., 1774480., 1788640., 1802800.,
      1816960., 1779040., 1793248., 1807456., 1821664., 1783600., 1797856.,
      1812112., 1826368., 1788160., 1802464., 1816768., 1831072., 1792720.,
      1807072., 1821424., 1835776., 1797280., 1811680., 1826080., 1840480.,
      1801840., 1816288., 1830736., 1845184., 1806400., 1820896., 1835392.,
      1849888., 1810960., 1825504., 1840048., 1854592., 1815520., 1830112.,
      1844704., 1859296., 1820080., 1834720., 1849360., 1864000., 1824640.,
      1839328., 1854016., 1868704., 1829200., 1843936., 1858672., 1873408.,
      1861120., 1876192., 1891264., 1906336., 1865680., 1880800., 1895920.,
      1911040., 1870240., 1885408., 1900576., 1915744., 1874800., 1890016.,
      1905232., 1920448., 1879360., 1894624., 1909888., 1925152., 1883920.,
      1899232., 1914544., 1929856., 1888480., 1903840., 1919200., 1934560.,
      1893040., 1908448., 1923856., 1939264., 1897600., 1913056., 1928512.,
      1943968., 1902160., 1917664., 1933168., 1948672., 1906720., 1922272.,
      1937824., 1953376., 1911280., 1926880., 1942480., 1958080., 1915840.,
      1931488., 1947136., 1962784., 1920400., 1936096., 1951792., 1967488.,
      1952320., 1968352., 1984384., 2000416., 1956880., 1972960., 1989040.,
      2005120., 1961440., 1977568., 1993696., 2009824., 1966000., 1982176.,
      1998352., 2014528., 1970560., 1986784., 2003008., 2019232., 1975120.,
      1991392., 2007664., 2023936., 1979680., 1996000., 2012320., 2028640.,
      1984240., 2000608., 2016976., 2033344., 1988800., 2005216., 2021632.,
      2038048., 1993360., 2009824., 2026288., 2042752., 1997920., 2014432.,
      2030944., 2047456., 2002480., 2019040., 2035600., 2052160., 2007040.,
      2023648., 2040256., 2056864., 2011600., 2028256., 2044912., 2061568.,
      2043520., 2060512., 2077504., 2094496., 2048080., 2065120., 2082160.,
      2099200., 2052640., 2069728., 2086816., 2103904., 2057200., 2074336.,
      2091472., 2108608., 2061760., 2078944., 2096128., 2113312., 2066320.,
      2083552., 2100784., 2118016., 2070880., 2088160., 2105440., 2122720.,
      2075440., 2092768., 2110096., 2127424., 2080000., 2097376., 2114752.,
      2132128., 2084560., 2101984., 2119408., 2136832., 2089120., 2106592.,
      2124064., 2141536., 2093680., 2111200., 2128720., 2146240., 2098240.,
      2115808., 2133376., 2150944., 2102800., 2120416., 2138032., 2155648.};
  const std::array<int, 4> in_shape = {{3, 10, 10, 2}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, SAME3x10x10x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      6721593.,  6746142.,  6770691., 6795240., 7591652., 7619624.,  7647596.,
      7675568.,  8389198.,  8420572., 8451946., 8483320., 9196579.,  9231334.,
      9266089.,  9300844.,  8242461., 8273646., 8304831., 8336016.,  7279700.,
      7307336.,  7334972.,  7362608., 6308380., 6332488., 6356596.,  6380704.,
      6965616.,  6992832.,  7020048., 7047264., 7878944., 7909952.,  7940960.,
      7971968.,  8725848.,  8760624., 8795400., 8830176., 9583544.,  9622064.,
      9660584.,  9699104.,  8597856., 8632416., 8666976., 8701536.,  7602592.,
      7633216.,  7663840.,  7694464., 6597848., 6624560., 6651272.,  6677984.,
      7337109.,  7366782.,  7396455., 7426128., 8310956., 8344760.,  8378564.,
      8412368.,  9224228.,  9262136., 9300044., 9337952., 10149009., 10190994.,
      10232979., 10274964., 9112821., 9150486., 9188151., 9225816.,  8066364.,
      8099736.,  8133108.,  8166480., 7009746., 7038852., 7067958.,  7097064.,
      7827672.,  7859592.,  7891512., 7923432., 8878088., 8914448.,  8950808.,
      8987168.,  9873538.,  9914308., 9955078., 9995848., 10880974., 10926124.,
      10971274., 11016424., 9776556., 9817056., 9857556., 9898056.,  8661416.,
      8697296.,  8733176.,  8769056., 7535674., 7566964., 7598254.,  7629544.,
      6644563.,  6672346.,  6700129., 6727912., 7523708., 7555352.,  7586996.,
      7618640.,  8351382.,  8386860., 8422338., 8457816., 9189429.,  9228714.,
      9267999.,  9307284.,  8250231., 8285466., 8320701., 8355936.,  7301900.,
      7333112.,  7364324.,  7395536., 6344544., 6371760., 6398976.,  6426192.,
      5430864.,  5454720.,  5478576., 5502432., 6135328., 6162496.,  6189664.,
      6216832.,  6792056.,  6822512., 6852968., 6883424., 7457784.,  7491504.,
      7525224.,  7558944.,  6688896., 6719136., 6749376., 6779616.,  5912224.,
      5939008.,  5965792.,  5992576., 5127864., 5151216., 5174568.,  5197920.,
      4194975.,  4215114.,  4235253., 4255392., 4722548., 4745480.,  4768412.,
      4791344.,  5257560.,  5283264., 5308968., 5334672., 5799927.,  5828382.,
      5856837.,  5885292.,  5204215., 5229730., 5255245., 5280760.,  4601828.,
      4624424.,  4647020.,  4669616., 3992850., 4012548., 4032246.,  4051944.};
  const std::array<int, 4> in_shape = {{3, 10, 10, 4}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 512.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, VALID3x10x10x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      763832.,  765008.,  766184.,  767360.,  768536.,  769712.,  770888.,
      772064.,  773240.,  774416.,  775592.,  776768.,  777944.,  779120.,
      780296.,  781472.,  782648.,  783824.,  785000.,  786176.,  787352.,
      788528.,  789704.,  790880.,  792056.,  793232.,  794408.,  795584.,
      810872.,  812048.,  813224.,  814400.,  815576.,  816752.,  817928.,
      819104.,  820280.,  821456.,  822632.,  823808.,  824984.,  826160.,
      827336.,  828512.,  829688.,  830864.,  832040.,  833216.,  834392.,
      835568.,  836744.,  837920.,  839096.,  840272.,  841448.,  842624.,
      857912.,  859088.,  860264.,  861440.,  862616.,  863792.,  864968.,
      866144.,  867320.,  868496.,  869672.,  870848.,  872024.,  873200.,
      874376.,  875552.,  876728.,  877904.,  879080.,  880256.,  881432.,
      882608.,  883784.,  884960.,  886136.,  887312.,  888488.,  889664.,
      904952.,  906128.,  907304.,  908480.,  909656.,  910832.,  912008.,
      913184.,  914360.,  915536.,  916712.,  917888.,  919064.,  920240.,
      921416.,  922592.,  923768.,  924944.,  926120.,  927296.,  928472.,
      929648.,  930824.,  932000.,  933176.,  934352.,  935528.,  936704.,
      951992.,  953168.,  954344.,  955520.,  956696.,  957872.,  959048.,
      960224.,  961400.,  962576.,  963752.,  964928.,  966104.,  967280.,
      968456.,  969632.,  970808.,  971984.,  973160.,  974336.,  975512.,
      976688.,  977864.,  979040.,  980216.,  981392.,  982568.,  983744.,
      999032.,  1000208., 1001384., 1002560., 1003736., 1004912., 1006088.,
      1007264., 1008440., 1009616., 1010792., 1011968., 1013144., 1014320.,
      1015496., 1016672., 1017848., 1019024., 1020200., 1021376., 1022552.,
      1023728., 1024904., 1026080., 1027256., 1028432., 1029608., 1030784.,
      1046072., 1047248., 1048424., 1049600., 1050776., 1051952., 1053128.,
      1054304., 1055480., 1056656., 1057832., 1059008., 1060184., 1061360.,
      1062536., 1063712., 1064888., 1066064., 1067240., 1068416., 1069592.,
      1070768., 1071944., 1073120., 1074296., 1075472., 1076648., 1077824.};
  const std::array<int, 4> in_shape = {{3, 10, 10, 4}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, SAME3x10x10x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1799011., 1817202., 1814682., 1833020., 1830353., 1848838., 1846024.,
      1864656., 2046640., 2067400., 2064528., 2085456., 2082416., 2103512.,
      2100304., 2121568., 2283047., 2306204., 2303110., 2326456., 2323173.,
      2346708., 2343236., 2366960., 2524704., 2550342., 2546900., 2572748.,
      2569096., 2595154., 2591292., 2617560., 2272465., 2295610., 2292406.,
      2315740., 2312347., 2335870., 2332288., 2356000., 2017872., 2038440.,
      2035600., 2056336., 2053328., 2074232., 2071056., 2092128., 1761093.,
      1779000., 1776650., 1794704., 1792207., 1810408., 1807764., 1826112.,
      2149112., 2169312., 2167792., 2188160., 2186472., 2207008., 2205152.,
      2225856., 2476032., 2499136., 2497408., 2520704., 2518784., 2542272.,
      2540160., 2563840., 2798264., 2824112., 2822288., 2848352., 2846312.,
      2872592., 2870336., 2896832., 3127136., 3155824., 3153760., 3182688.,
      3180384., 3209552., 3207008., 3236416., 2868840., 2894784., 2892944.,
      2919104., 2917048., 2943424., 2941152., 2967744., 2607872., 2630976.,
      2629504., 2652800., 2651136., 2674624., 2672768., 2696448., 2297064.,
      2317232., 2316016., 2336352., 2334968., 2355472., 2353920., 2374592.,
      2782497., 2805546., 2804278., 2827516., 2826059., 2849486., 2847840.,
      2871456., 3220016., 3246424., 3244912., 3271536., 3269808., 3296648.,
      3294704., 3321760., 3658901., 3688520., 3686858., 3716720., 3714815.,
      3744920., 3742772., 3773120., 4105336., 4138274., 4136300., 4169508.,
      4167264., 4200742., 4198228., 4231976., 3773291., 3803114., 3801274.,
      3831340., 3829257., 3859566., 3857240., 3887792., 3437712., 3464312.,
      3462768., 3489584., 3487824., 3514856., 3512880., 3540128., 3041215.,
      3064484., 3063142., 3086600., 3085069., 3108716., 3106996., 3130832.,
      3439422., 3464880., 3463884., 3489552., 3488346., 3514224., 3512808.,
      3538896., 3980352., 4009488., 4008288., 4037664., 4036224., 4065840.,
      4064160., 4094016., 4528734., 4561412., 4560084., 4593032., 4591434.,
      4624652., 4622784., 4656272., 5085608., 5121948., 5120312., 5156952.,
      5155016., 5191956., 5189720., 5226960., 4522618., 4555352., 4553940.,
      4586944., 4585262., 4618536., 4616584., 4650128., 3955712., 3984720.,
      3983712., 4012960., 4011712., 4041200., 4039712., 4069440., 3414314.,
      3439732., 3438796., 3464424., 3463278., 3489116., 3487760., 3513808.,
      3030805., 3054758., 3052390., 3076532., 3073975., 3098306., 3095560.,
      3120080., 3413520., 3440888., 3438192., 3465776., 3462864., 3490664.,
      3487536., 3515552., 3742081., 3772716., 3769786., 3800664., 3797491.,
      3828612., 3825196., 3856560., 4077968., 4111978., 4108652., 4142932.,
      4139336., 4173886., 4170020., 4204840., 3635575., 3666158., 3663306.,
      3694132., 3691037., 3722106., 3718768., 3750080., 3190384., 3217432.,
      3215216., 3242480., 3240048., 3267528., 3264880., 3292576., 2756435.,
      2780096., 2778166., 2802016., 2799897., 2823936., 2821628., 2845856.,
      2377528., 2399136., 2396656., 2418432., 2415784., 2437728., 2434912.,
      2457024., 2681344., 2705984., 2703232., 2728064., 2725120., 2750144.,
      2747008., 2772224., 2935416., 2962928., 2960016., 2987744., 2984616.,
      3012560., 3009216., 3037376., 3196128., 3226608., 3223392., 3254112.,
      3250656., 3281616., 3277920., 3309120., 2863912., 2891264., 2888592.,
      2916160., 2913272., 2941056., 2937952., 2965952., 2529536., 2553664.,
      2551680., 2576000., 2573824., 2598336., 2595968., 2620672., 2191656.,
      2212720., 2211056., 2232288., 2230456., 2251856., 2249856., 2271424.,
      1824071., 1842494., 1841162., 1859732., 1858253., 1876970., 1875344.,
      1894208., 2065168., 2086120., 2084752., 2105872., 2104336., 2125624.,
      2123920., 2145376., 2312355., 2335920., 2334390., 2358144., 2356425.,
      2380368., 2378460., 2402592., 2565464., 2591726., 2589908., 2616380.,
      2614352., 2641034., 2638796., 2665688., 2329581., 2353134., 2351750.,
      2375492., 2373919., 2397850., 2396088., 2420208., 2091696., 2112456.,
      2111632., 2132560., 2131568., 2152664., 2151504., 2172768., 1835081.,
      1853220., 1852570., 1870856., 1870059., 1888492., 1887548., 1906128.};
  const std::array<int, 4> in_shape = {{3, 10, 10, 4}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 256.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, VALID3x10x10x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1505248., 1527664., 1507552., 1530016., 1509856., 1532368., 1512160.,
      1534720., 1514464., 1537072., 1516768., 1539424., 1519072., 1541776.,
      1521376., 1544128., 1523680., 1546480., 1525984., 1548832., 1528288.,
      1551184., 1530592., 1553536., 1532896., 1555888., 1535200., 1558240.,
      1537504., 1560592., 1539808., 1562944., 1542112., 1565296., 1544416.,
      1567648., 1546720., 1570000., 1549024., 1572352., 1551328., 1574704.,
      1553632., 1577056., 1555936., 1579408., 1558240., 1581760., 1560544.,
      1584112., 1562848., 1586464., 1565152., 1588816., 1567456., 1591168.,
      1597408., 1621744., 1599712., 1624096., 1602016., 1626448., 1604320.,
      1628800., 1606624., 1631152., 1608928., 1633504., 1611232., 1635856.,
      1613536., 1638208., 1615840., 1640560., 1618144., 1642912., 1620448.,
      1645264., 1622752., 1647616., 1625056., 1649968., 1627360., 1652320.,
      1629664., 1654672., 1631968., 1657024., 1634272., 1659376., 1636576.,
      1661728., 1638880., 1664080., 1641184., 1666432., 1643488., 1668784.,
      1645792., 1671136., 1648096., 1673488., 1650400., 1675840., 1652704.,
      1678192., 1655008., 1680544., 1657312., 1682896., 1659616., 1685248.,
      1689568., 1715824., 1691872., 1718176., 1694176., 1720528., 1696480.,
      1722880., 1698784., 1725232., 1701088., 1727584., 1703392., 1729936.,
      1705696., 1732288., 1708000., 1734640., 1710304., 1736992., 1712608.,
      1739344., 1714912., 1741696., 1717216., 1744048., 1719520., 1746400.,
      1721824., 1748752., 1724128., 1751104., 1726432., 1753456., 1728736.,
      1755808., 1731040., 1758160., 1733344., 1760512., 1735648., 1762864.,
      1737952., 1765216., 1740256., 1767568., 1742560., 1769920., 1744864.,
      1772272., 1747168., 1774624., 1749472., 1776976., 1751776., 1779328.,
      1781728., 1809904., 1784032., 1812256., 1786336., 1814608., 1788640.,
      1816960., 1790944., 1819312., 1793248., 1821664., 1795552., 1824016.,
      1797856., 1826368., 1800160., 1828720., 1802464., 1831072., 1804768.,
      1833424., 1807072., 1835776., 1809376., 1838128., 1811680., 1840480.,
      1813984., 1842832., 1816288., 1845184., 1818592., 1847536., 1820896.,
      1849888., 1823200., 1852240., 1825504., 1854592., 1827808., 1856944.,
      1830112., 1859296., 1832416., 1861648., 1834720., 1864000., 1837024.,
      1866352., 1839328., 1868704., 1841632., 1871056., 1843936., 1873408.,
      1873888., 1903984., 1876192., 1906336., 1878496., 1908688., 1880800.,
      1911040., 1883104., 1913392., 1885408., 1915744., 1887712., 1918096.,
      1890016., 1920448., 1892320., 1922800., 1894624., 1925152., 1896928.,
      1927504., 1899232., 1929856., 1901536., 1932208., 1903840., 1934560.,
      1906144., 1936912., 1908448., 1939264., 1910752., 1941616., 1913056.,
      1943968., 1915360., 1946320., 1917664., 1948672., 1919968., 1951024.,
      1922272., 1953376., 1924576., 1955728., 1926880., 1958080., 1929184.,
      1960432., 1931488., 1962784., 1933792., 1965136., 1936096., 1967488.,
      1966048., 1998064., 1968352., 2000416., 1970656., 2002768., 1972960.,
      2005120., 1975264., 2007472., 1977568., 2009824., 1979872., 2012176.,
      1982176., 2014528., 1984480., 2016880., 1986784., 2019232., 1989088.,
      2021584., 1991392., 2023936., 1993696., 2026288., 1996000., 2028640.,
      1998304., 2030992., 2000608., 2033344., 2002912., 2035696., 2005216.,
      2038048., 2007520., 2040400., 2009824., 2042752., 2012128., 2045104.,
      2014432., 2047456., 2016736., 2049808., 2019040., 2052160., 2021344.,
      2054512., 2023648., 2056864., 2025952., 2059216., 2028256., 2061568.,
      2058208., 2092144., 2060512., 2094496., 2062816., 2096848., 2065120.,
      2099200., 2067424., 2101552., 2069728., 2103904., 2072032., 2106256.,
      2074336., 2108608., 2076640., 2110960., 2078944., 2113312., 2081248.,
      2115664., 2083552., 2118016., 2085856., 2120368., 2088160., 2122720.,
      2090464., 2125072., 2092768., 2127424., 2095072., 2129776., 2097376.,
      2132128., 2099680., 2134480., 2101984., 2136832., 2104288., 2139184.,
      2106592., 2141536., 2108896., 2143888., 2111200., 2146240., 2113504.,
      2148592., 2115808., 2150944., 2118112., 2153296., 2120416., 2155648.};
  const std::array<int, 4> in_shape = {{3, 10, 10, 4}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, SAME3x10x10x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1848503., 1866694., 1884885., 1903076., 1866642., 1884980., 1903318.,
      1921656., 1884781., 1903266., 1921751., 1940236., 1902920., 1921552.,
      1940184., 1958816., 2111048., 2131808., 2152568., 2173328., 2131808.,
      2152736., 2173664., 2194592., 2152568., 2173664., 2194760., 2215856.,
      2173328., 2194592., 2215856., 2237120., 2377177., 2400334., 2423491.,
      2446648., 2400730., 2424076., 2447422., 2470768., 2424283., 2447818.,
      2471353., 2494888., 2447836., 2471560., 2495284., 2519008., 2647578.,
      2673216., 2698854., 2724492., 2673840., 2699688., 2725536., 2751384.,
      2700102., 2726160., 2752218., 2778276., 2726364., 2752632., 2778900.,
      2805168., 2391097., 2414242., 2437387., 2460532., 2414662., 2437996.,
      2461330., 2484664., 2438227., 2461750., 2485273., 2508796., 2461792.,
      2485504., 2509216., 2532928., 2137160., 2157728., 2178296., 2198864.,
      2158112., 2178848., 2199584., 2220320., 2179064., 2199968., 2220872.,
      2241776., 2200016., 2221088., 2242160., 2263232., 1886103., 1904010.,
      1921917., 1939824., 1904526., 1922580., 1940634., 1958688., 1922949.,
      1941150., 1959351., 1977552., 1941372., 1959720., 1978068., 1996416.,
      2206728., 2226928., 2247128., 2267328., 2227792., 2248160., 2268528.,
      2288896., 2248856., 2269392., 2289928., 2310464., 2269920., 2290624.,
      2311328., 2332032., 2563520., 2586624., 2609728., 2632832., 2587648.,
      2610944., 2634240., 2657536., 2611776., 2635264., 2658752., 2682240.,
      2635904., 2659584., 2683264., 2706944., 2945144., 2970992., 2996840.,
      3022688., 2972496., 2998560., 3024624., 3050688., 2999848., 3026128.,
      3052408., 3078688., 3027200., 3053696., 3080192., 3106688., 3331760.,
      3360448., 3389136., 3417824., 3362240., 3391168., 3420096., 3449024.,
      3392720., 3421888., 3451056., 3480224., 3423200., 3452608., 3482016.,
      3511424., 3069816., 3095760., 3121704., 3147648., 3097328., 3123488.,
      3149648., 3175808., 3124840., 3151216., 3177592., 3203968., 3152352.,
      3178944., 3205536., 3232128., 2810816., 2833920., 2857024., 2880128.,
      2835456., 2858752., 2882048., 2905344., 2860096., 2883584., 2907072.,
      2930560., 2884736., 2908416., 2932096., 2955776., 2507784., 2527952.,
      2548120., 2568288., 2529392., 2549728., 2570064., 2590400., 2551000.,
      2571504., 2592008., 2612512., 2572608., 2593280., 2613952., 2634624.,
      2922297., 2945346., 2968395., 2991444., 2945958., 2969196., 2992434.,
      3015672., 2969619., 2993046., 3016473., 3039900., 2993280., 3016896.,
      3040512., 3064128., 3413304., 3439712., 3466120., 3492528., 3440352.,
      3466976., 3493600., 3520224., 3467400., 3494240., 3521080., 3547920.,
      3494448., 3521504., 3548560., 3575616., 3949431., 3979050., 4008669.,
      4038288., 3980014., 4009876., 4039738., 4069600., 4010597., 4040702.,
      4070807., 4100912., 4041180., 4071528., 4101876., 4132224., 4490310.,
      4523248., 4556186., 4589124., 4524320., 4557528., 4590736., 4623944.,
      4558330., 4591808., 4625286., 4658764., 4592340., 4626088., 4659836.,
      4693584., 4143191., 4173014., 4202837., 4232660., 4173826., 4203892.,
      4233958., 4264024., 4204461., 4234770., 4265079., 4295388., 4235096.,
      4265648., 4296200., 4326752., 3799352., 3825952., 3852552., 3879152.,
      3826720., 3853536., 3880352., 3907168., 3854088., 3881120., 3908152.,
      3935184., 3881456., 3908704., 3935952., 3963200., 3401625., 3424894.,
      3448163., 3471432., 3425578., 3449036., 3472494., 3495952., 3449531.,
      3473178., 3496825., 3520472., 3473484., 3497320., 3521156., 3544992.,
      3869706., 3895164., 3920622., 3946080., 3895124., 3920792., 3946460.,
      3972128., 3920542., 3946420., 3972298., 3998176., 3945960., 3972048.,
      3998136., 4024224., 4525744., 4554880., 4584016., 4613152., 4554752.,
      4584128., 4613504., 4642880., 4583760., 4613376., 4642992., 4672608.,
      4612768., 4642624., 4672480., 4702336., 5247254., 5279932., 5312610.,
      5345288., 5279988., 5312936., 5345884., 5378832., 5312722., 5345940.,
      5379158., 5412376., 5345456., 5378944., 5412432., 5445920., 5973340.,
      6009680., 6046020., 6082360., 6009680., 6046320., 6082960., 6119600.,
      6046020., 6082960., 6119900., 6156840., 6082360., 6119600., 6156840.,
      6194080., 5247254., 5279988., 5312722., 5345456., 5279932., 5312936.,
      5345940., 5378944., 5312610., 5345884., 5379158., 5412432., 5345288.,
      5378832., 5412376., 5445920., 4525744., 4554752., 4583760., 4612768.,
      4554880., 4584128., 4613376., 4642624., 4584016., 4613504., 4642992.,
      4672480., 4613152., 4642880., 4672608., 4702336., 3869706., 3895124.,
      3920542., 3945960., 3895164., 3920792., 3946420., 3972048., 3920622.,
      3946460., 3972298., 3998136., 3946080., 3972128., 3998176., 4024224.,
      3401625., 3425578., 3449531., 3473484., 3424894., 3449036., 3473178.,
      3497320., 3448163., 3472494., 3496825., 3521156., 3471432., 3495952.,
      3520472., 3544992., 3799352., 3826720., 3854088., 3881456., 3825952.,
      3853536., 3881120., 3908704., 3852552., 3880352., 3908152., 3935952.,
      3879152., 3907168., 3935184., 3963200., 4143191., 4173826., 4204461.,
      4235096., 4173014., 4203892., 4234770., 4265648., 4202837., 4233958.,
      4265079., 4296200., 4232660., 4264024., 4295388., 4326752., 4490310.,
      4524320., 4558330., 4592340., 4523248., 4557528., 4591808., 4626088.,
      4556186., 4590736., 4625286., 4659836., 4589124., 4623944., 4658764.,
      4693584., 3949431., 3980014., 4010597., 4041180., 3979050., 4009876.,
      4040702., 4071528., 4008669., 4039738., 4070807., 4101876., 4038288.,
      4069600., 4100912., 4132224., 3413304., 3440352., 3467400., 3494448.,
      3439712., 3466976., 3494240., 3521504., 3466120., 3493600., 3521080.,
      3548560., 3492528., 3520224., 3547920., 3575616., 2922297., 2945958.,
      2969619., 2993280., 2945346., 2969196., 2993046., 3016896., 2968395.,
      2992434., 3016473., 3040512., 2991444., 3015672., 3039900., 3064128.,
      2507784., 2529392., 2551000., 2572608., 2527952., 2549728., 2571504.,
      2593280., 2548120., 2570064., 2592008., 2613952., 2568288., 2590400.,
      2612512., 2634624., 2810816., 2835456., 2860096., 2884736., 2833920.,
      2858752., 2883584., 2908416., 2857024., 2882048., 2907072., 2932096.,
      2880128., 2905344., 2930560., 2955776., 3069816., 3097328., 3124840.,
      3152352., 3095760., 3123488., 3151216., 3178944., 3121704., 3149648.,
      3177592., 3205536., 3147648., 3175808., 3203968., 3232128., 3331760.,
      3362240., 3392720., 3423200., 3360448., 3391168., 3421888., 3452608.,
      3389136., 3420096., 3451056., 3482016., 3417824., 3449024., 3480224.,
      3511424., 2945144., 2972496., 2999848., 3027200., 2970992., 2998560.,
      3026128., 3053696., 2996840., 3024624., 3052408., 3080192., 3022688.,
      3050688., 3078688., 3106688., 2563520., 2587648., 2611776., 2635904.,
      2586624., 2610944., 2635264., 2659584., 2609728., 2634240., 2658752.,
      2683264., 2632832., 2657536., 2682240., 2706944., 2206728., 2227792.,
      2248856., 2269920., 2226928., 2248160., 2269392., 2290624., 2247128.,
      2268528., 2289928., 2311328., 2267328., 2288896., 2310464., 2332032.,
      1886103., 1904526., 1922949., 1941372., 1904010., 1922580., 1941150.,
      1959720., 1921917., 1940634., 1959351., 1978068., 1939824., 1958688.,
      1977552., 1996416., 2137160., 2158112., 2179064., 2200016., 2157728.,
      2178848., 2199968., 2221088., 2178296., 2199584., 2220872., 2242160.,
      2198864., 2220320., 2241776., 2263232., 2391097., 2414662., 2438227.,
      2461792., 2414242., 2437996., 2461750., 2485504., 2437387., 2461330.,
      2485273., 2509216., 2460532., 2484664., 2508796., 2532928., 2647578.,
      2673840., 2700102., 2726364., 2673216., 2699688., 2726160., 2752632.,
      2698854., 2725536., 2752218., 2778900., 2724492., 2751384., 2778276.,
      2805168., 2377177., 2400730., 2424283., 2447836., 2400334., 2424076.,
      2447818., 2471560., 2423491., 2447422., 2471353., 2495284., 2446648.,
      2470768., 2494888., 2519008., 2111048., 2131808., 2152568., 2173328.,
      2131808., 2152736., 2173664., 2194592., 2152568., 2173664., 2194760.,
      2215856., 2173328., 2194592., 2215856., 2237120., 1848503., 1866642.,
      1884781., 1902920., 1866694., 1884980., 1903266., 1921552., 1884885.,
      1903318., 1921751., 1940184., 1903076., 1921656., 1940236., 1958816.};
  const std::array<int, 4> in_shape = {{3, 10, 10, 4}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 256.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride1, VALID3x10x10x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      2988080., 3010496., 3032912., 3055328., 2992640., 3015104., 3037568.,
      3060032., 2997200., 3019712., 3042224., 3064736., 3001760., 3024320.,
      3046880., 3069440., 3006320., 3028928., 3051536., 3074144., 3010880.,
      3033536., 3056192., 3078848., 3015440., 3038144., 3060848., 3083552.,
      3020000., 3042752., 3065504., 3088256., 3024560., 3047360., 3070160.,
      3092960., 3029120., 3051968., 3074816., 3097664., 3033680., 3056576.,
      3079472., 3102368., 3038240., 3061184., 3084128., 3107072., 3042800.,
      3065792., 3088784., 3111776., 3047360., 3070400., 3093440., 3116480.,
      3051920., 3075008., 3098096., 3121184., 3056480., 3079616., 3102752.,
      3125888., 3061040., 3084224., 3107408., 3130592., 3065600., 3088832.,
      3112064., 3135296., 3070160., 3093440., 3116720., 3140000., 3074720.,
      3098048., 3121376., 3144704., 3079280., 3102656., 3126032., 3149408.,
      3083840., 3107264., 3130688., 3154112., 3088400., 3111872., 3135344.,
      3158816., 3092960., 3116480., 3140000., 3163520., 3097520., 3121088.,
      3144656., 3168224., 3102080., 3125696., 3149312., 3172928., 3106640.,
      3130304., 3153968., 3177632., 3111200., 3134912., 3158624., 3182336.,
      3170480., 3194816., 3219152., 3243488., 3175040., 3199424., 3223808.,
      3248192., 3179600., 3204032., 3228464., 3252896., 3184160., 3208640.,
      3233120., 3257600., 3188720., 3213248., 3237776., 3262304., 3193280.,
      3217856., 3242432., 3267008., 3197840., 3222464., 3247088., 3271712.,
      3202400., 3227072., 3251744., 3276416., 3206960., 3231680., 3256400.,
      3281120., 3211520., 3236288., 3261056., 3285824., 3216080., 3240896.,
      3265712., 3290528., 3220640., 3245504., 3270368., 3295232., 3225200.,
      3250112., 3275024., 3299936., 3229760., 3254720., 3279680., 3304640.,
      3234320., 3259328., 3284336., 3309344., 3238880., 3263936., 3288992.,
      3314048., 3243440., 3268544., 3293648., 3318752., 3248000., 3273152.,
      3298304., 3323456., 3252560., 3277760., 3302960., 3328160., 3257120.,
      3282368., 3307616., 3332864., 3261680., 3286976., 3312272., 3337568.,
      3266240., 3291584., 3316928., 3342272., 3270800., 3296192., 3321584.,
      3346976., 3275360., 3300800., 3326240., 3351680., 3279920., 3305408.,
      3330896., 3356384., 3284480., 3310016., 3335552., 3361088., 3289040.,
      3314624., 3340208., 3365792., 3293600., 3319232., 3344864., 3370496.,
      3352880., 3379136., 3405392., 3431648., 3357440., 3383744., 3410048.,
      3436352., 3362000., 3388352., 3414704., 3441056., 3366560., 3392960.,
      3419360., 3445760., 3371120., 3397568., 3424016., 3450464., 3375680.,
      3402176., 3428672., 3455168., 3380240., 3406784., 3433328., 3459872.,
      3384800., 3411392., 3437984., 3464576., 3389360., 3416000., 3442640.,
      3469280., 3393920., 3420608., 3447296., 3473984., 3398480., 3425216.,
      3451952., 3478688., 3403040., 3429824., 3456608., 3483392., 3407600.,
      3434432., 3461264., 3488096., 3412160., 3439040., 3465920., 3492800.,
      3416720., 3443648., 3470576., 3497504., 3421280., 3448256., 3475232.,
      3502208., 3425840., 3452864., 3479888., 3506912., 3430400., 3457472.,
      3484544., 3511616., 3434960., 3462080., 3489200., 3516320., 3439520.,
      3466688., 3493856., 3521024., 3444080., 3471296., 3498512., 3525728.,
      3448640., 3475904., 3503168., 3530432., 3453200., 3480512., 3507824.,
      3535136., 3457760., 3485120., 3512480., 3539840., 3462320., 3489728.,
      3517136., 3544544., 3466880., 3494336., 3521792., 3549248., 3471440.,
      3498944., 3526448., 3553952., 3476000., 3503552., 3531104., 3558656.,
      3535280., 3563456., 3591632., 3619808., 3539840., 3568064., 3596288.,
      3624512., 3544400., 3572672., 3600944., 3629216., 3548960., 3577280.,
      3605600., 3633920., 3553520., 3581888., 3610256., 3638624., 3558080.,
      3586496., 3614912., 3643328., 3562640., 3591104., 3619568., 3648032.,
      3567200., 3595712., 3624224., 3652736., 3571760., 3600320., 3628880.,
      3657440., 3576320., 3604928., 3633536., 3662144., 3580880., 3609536.,
      3638192., 3666848., 3585440., 3614144., 3642848., 3671552., 3590000.,
      3618752., 3647504., 3676256., 3594560., 3623360., 3652160., 3680960.,
      3599120., 3627968., 3656816., 3685664., 3603680., 3632576., 3661472.,
      3690368., 3608240., 3637184., 3666128., 3695072., 3612800., 3641792.,
      3670784., 3699776., 3617360., 3646400., 3675440., 3704480., 3621920.,
      3651008., 3680096., 3709184., 3626480., 3655616., 3684752., 3713888.,
      3631040., 3660224., 3689408., 3718592., 3635600., 3664832., 3694064.,
      3723296., 3640160., 3669440., 3698720., 3728000., 3644720., 3674048.,
      3703376., 3732704., 3649280., 3678656., 3708032., 3737408., 3653840.,
      3683264., 3712688., 3742112., 3658400., 3687872., 3717344., 3746816.,
      3717680., 3747776., 3777872., 3807968., 3722240., 3752384., 3782528.,
      3812672., 3726800., 3756992., 3787184., 3817376., 3731360., 3761600.,
      3791840., 3822080., 3735920., 3766208., 3796496., 3826784., 3740480.,
      3770816., 3801152., 3831488., 3745040., 3775424., 3805808., 3836192.,
      3749600., 3780032., 3810464., 3840896., 3754160., 3784640., 3815120.,
      3845600., 3758720., 3789248., 3819776., 3850304., 3763280., 3793856.,
      3824432., 3855008., 3767840., 3798464., 3829088., 3859712., 3772400.,
      3803072., 3833744., 3864416., 3776960., 3807680., 3838400., 3869120.,
      3781520., 3812288., 3843056., 3873824., 3786080., 3816896., 3847712.,
      3878528., 3790640., 3821504., 3852368., 3883232., 3795200., 3826112.,
      3857024., 3887936., 3799760., 3830720., 3861680., 3892640., 3804320.,
      3835328., 3866336., 3897344., 3808880., 3839936., 3870992., 3902048.,
      3813440., 3844544., 3875648., 3906752., 3818000., 3849152., 3880304.,
      3911456., 3822560., 3853760., 3884960., 3916160., 3827120., 3858368.,
      3889616., 3920864., 3831680., 3862976., 3894272., 3925568., 3836240.,
      3867584., 3898928., 3930272., 3840800., 3872192., 3903584., 3934976.,
      3900080., 3932096., 3964112., 3996128., 3904640., 3936704., 3968768.,
      4000832., 3909200., 3941312., 3973424., 4005536., 3913760., 3945920.,
      3978080., 4010240., 3918320., 3950528., 3982736., 4014944., 3922880.,
      3955136., 3987392., 4019648., 3927440., 3959744., 3992048., 4024352.,
      3932000., 3964352., 3996704., 4029056., 3936560., 3968960., 4001360.,
      4033760., 3941120., 3973568., 4006016., 4038464., 3945680., 3978176.,
      4010672., 4043168., 3950240., 3982784., 4015328., 4047872., 3954800.,
      3987392., 4019984., 4052576., 3959360., 3992000., 4024640., 4057280.,
      3963920., 3996608., 4029296., 4061984., 3968480., 4001216., 4033952.,
      4066688., 3973040., 4005824., 4038608., 4071392., 3977600., 4010432.,
      4043264., 4076096., 3982160., 4015040., 4047920., 4080800., 3986720.,
      4019648., 4052576., 4085504., 3991280., 4024256., 4057232., 4090208.,
      3995840., 4028864., 4061888., 4094912., 4000400., 4033472., 4066544.,
      4099616., 4004960., 4038080., 4071200., 4104320., 4009520., 4042688.,
      4075856., 4109024., 4014080., 4047296., 4080512., 4113728., 4018640.,
      4051904., 4085168., 4118432., 4023200., 4056512., 4089824., 4123136.,
      4082480., 4116416., 4150352., 4184288., 4087040., 4121024., 4155008.,
      4188992., 4091600., 4125632., 4159664., 4193696., 4096160., 4130240.,
      4164320., 4198400., 4100720., 4134848., 4168976., 4203104., 4105280.,
      4139456., 4173632., 4207808., 4109840., 4144064., 4178288., 4212512.,
      4114400., 4148672., 4182944., 4217216., 4118960., 4153280., 4187600.,
      4221920., 4123520., 4157888., 4192256., 4226624., 4128080., 4162496.,
      4196912., 4231328., 4132640., 4167104., 4201568., 4236032., 4137200.,
      4171712., 4206224., 4240736., 4141760., 4176320., 4210880., 4245440.,
      4146320., 4180928., 4215536., 4250144., 4150880., 4185536., 4220192.,
      4254848., 4155440., 4190144., 4224848., 4259552., 4160000., 4194752.,
      4229504., 4264256., 4164560., 4199360., 4234160., 4268960., 4169120.,
      4203968., 4238816., 4273664., 4173680., 4208576., 4243472., 4278368.,
      4178240., 4213184., 4248128., 4283072., 4182800., 4217792., 4252784.,
      4287776., 4187360., 4222400., 4257440., 4292480., 4191920., 4227008.,
      4262096., 4297184., 4196480., 4231616., 4266752., 4301888., 4201040.,
      4236224., 4271408., 4306592., 4205600., 4240832., 4276064., 4311296.};
  const std::array<int, 4> in_shape = {{3, 10, 10, 4}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}